基本类型
1. number
表示所有数字类型,包括整数和浮点数。
let age: number = 25;
let pi: number = 3.14;
2. string
表示文本数据。
let name: string = "Alice";
let greeting: string = `Hello, ${name}`;
3. boolean
表示布尔值:true 或 false。
let isDone: boolean = false;
4. array
表示元素类型相同的数组。
let numbers: number[] = [1, 2, 3, 4, 5];
let strings: Array<string> = ["one", "two", "three"];
5. tuple
表示已知元素数量和类型的数组。
let tuple: [string, number];
tuple = ["hello", 10];
6. enum
表示枚举类型,定义一组命名常量。
enum Color {
Red,
Green,
Blue,
}
let c: Color = Color.Green;
7. any
表示任意类型,通常用于动态内容。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;
8. void
表示没有任何类型,通常用于函数没有返回值的情况。
function warnUser(): void {
console.log("This is a warning message");
}
9. null 和 undefined
表示空值和未定义值。
let u: undefined = undefined;
let n: null = null;
10. object
表示非原始类型,即除 number,string,boolean,symbol,null 或 undefined 之外的类型。
let obj: object = { name: "Alice", age: 25 };
类型断言
类型断言用于手动指定一个值的类型。
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
联合类型和交叉类型
联合类型
联合类型表示一个值可以是几种类型之一。
let value: string | number;
value = "hello";
value = 42;
交叉类型
交叉类型表示将多个类型合并为一个类型。
interface A {
a: string;
}
interface B {
b: number;
}
type C = A & B;
let c: C = { a: "hello", b: 42 };
类型别名
类型别名用于为类型创建新名称。
type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
if (typeof n === "string") {
return n;
} else {
return n();
}
}
函数
可以为函数的参数和返回值定义类型。
function add(x: number, y: number): number {
return x + y;
}
let myAdd: (x: number, y: number) => number = function (x: number, y: number): number {
return x + y;
};
接口
接口用于定义对象的类型。
interface Person {
name: string;
age: number;
}
let user: Person = {
name: "John",
age: 30,
};
类
TypeScript 支持面向对象编程,包括类、继承和修饰符。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
move(distance: number = 0) {
console.log(`${this.name} moved ${distance}m.`);
}
}
class Dog extends Animal {
bark() {
console.log("Woof! Woof!");
}
}
let dog = new Dog("Rex");
dog.bark();
dog.move(10);
泛型
泛型用于创建可重用的组件,支持多种类型。
function identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("myString");
let output2 = identity<number>(100);