TypeScript 提供了多种数据类型,主要可分为基本数据类型、复合数据类型和特殊类型。以下是这些数据类型的详细介绍:
1. 基本数据类型
-
number
: 表示数字,包括整数和浮点数。let age: number = 30;
-
string
: 表示字符串。let name: string = "Alice";
-
boolean
: 表示布尔值(true
或false
)。let isStudent: boolean = true;
-
void
: 表示没有返回值的函数类型,通常用于函数。function logMessage(): void { console.log("No return value"); }
-
null
: 表示空值。let n: null = null;
-
undefined
: 表示未定义的值。let u: undefined = undefined;
-
any
: 表示任意类型,允许关闭类型检查。let anything: any = 42; anything = "Now I'm a string.";
2. 复合数据类型
-
数组: 使用类型后加
[]
来声明数组类型。let numbers: number[] = [1, 2, 3]; let names: Array<string> = ["Alice", "Bob"];
-
元组: 一种特殊类型的数组,允许不同类型的元素,长度固定。
let tuple: [string, number] = ["Alice", 30];
-
对象: 表示键值对的集合,键是字符串,值可以是任何类型。
let person: { name: string; age: number } = { name: "Alice", age: 30, };
-
枚举:枚举成员可以是数字或字符串。使用枚举可以提高代码的可读性和可维护性
enum Direction { Up, // 0 Down, // 1 Left, // 2 Right // 3 } let dir: Direction = Direction.Up; console.log(dir); // 输出: 0
3. 特殊类型
-
联合类型: 允许一个变量可以是多种类型之一,通过
|
符号定义。let value: number | string; value = 42; // 允许 value = "Hello"; // 允许
-
交叉类型: 将多个类型合并为一个类型。
interface Person { name: string; } interface Contact { email: string; } type UserContact = Person & Contact; const user: UserContact = { name: "Alice", email: "alice@example.com", };
-
只读属性: 使用
readonly
修饰符来定义只读属性。interface Point { readonly x: number; readonly y: number; } const point: Point = { x: 10, y: 20 }; // point.x = 5; // 错误:无法修改只读属性
4. 特殊用法
-
never
: 表示永远不会有值的类型,通常用于抛出错误或无限循环的函数。function throwError(): never { throw new Error("This is an error!"); }
-
unknown
: 表示未知类型,类型安全比any
更严格。let value: unknown; value = 42; // 允许 value = "Hello"; // 允许 if (typeof value === "string") { console.log(value); // 需要类型检查才能使用 }