TypeScript是JavaScript的超集,它引入了静态类型来增强代码的可靠性和可维护性。TypeScript提供了多种类型,主要分为以下几类:
基本类型 (Primitive Types)
number
: 表示数字,包括整数和浮点数。let num: number = 42;
string
: 表示字符串。let str: string = "Hello, TypeScript!";
boolean
: 表示布尔值,true或false。let isTrue: boolean = true;
null
: 表示空值。let n: null = null;
undefined
: 表示未定义的值。let u: undefined = undefined;
引用类型 (Reference Types)
object
: 表示非原始类型的对象。let obj: object = { name: "John", age: 30 };
特殊类型
any
: 表示任意类型,可以赋值为任何类型的值。let anything: any = "Could be anything"; anything = 42; // 也是合法的
unknown
: 表示未知类型,类似于any
但更安全,需要类型断言或检查才能使用。let notSure: unknown = 4; if (typeof notSure === "number") { let num: number = notSure; }
never
: 表示永不存在的值的类型,比如抛出异常或无限循环的函数的返回类型。function error(message: string): never { throw new Error(message); }
void
: 表示没有任何类型,通常用于函数没有返回值的情况。function warnUser(): void { console.log("This is a warning message"); }
复杂类型 (Complex Types)
Array
: 表示数组,可以使用type[]
或Array<type>
表示。let numArray: number[] = [1, 2, 3]; let strArray: Array<string> = ["a", "b", "c"];
Tuple
: 表示固定长度和已知类型的数组。let tuple: [string, number]; tuple = ["hello", 10]; // 合法
Enum
: 枚举类型,定义一组命名的常量。enum Color { Red, Green, Blue } let c: Color = Color.Green;
Union
: 联合类型,表示可以是多种类型之一。let union: string | number; union = "Hello"; union = 42;
Intersection
: 交叉类型,将多个类型合并为一个类型。interface A { a: string; } interface B { b: number; } let intersection: A & B = { a: "hello", b: 42 };
自定义类型 (Custom Types)
-
type
: 类型别名,可以为任意类型起一个别名。type Name = string; let name: Name = "John Doe";
-
interface
: 接口,定义对象的结构。interface Person { name: string; age: number; } let person: Person = { name: "Alice", age: 25 };