目录
- 基础类型 (Primitive Types)
- 数组类型 (Array Types)
- 元组类型 (Tuple Types)
- 枚举类型 (Enum Types)
- 对象类型 (Object Types)
- 函数类型 (Function Types)
- 接口类型 (Interface Types)
- 类类型 (Class Types)
- 泛型类型 (Generic Types)
- 联合类型 (Union Types)
- 交叉类型 (Intersection Types)
- 类型别名 (Type Aliases)
- 字面量类型 (Literal Types)
- 条件类型 (Conditional Types)
- 映射类型 (Mapped Types)
- 模板字面量类型 (Template Literal Types)
- 索引访问类型 (Indexed Access Types)
- 工具类型 (Utility Types)
- 模块和命名空间
- 声明合并 (Declaration Merging)
- 类型断言 (Type Assertions)
1. 基础类型 (Primitive Types)
TypeScript 支持 JavaScript 的所有基础类型,并添加了一些额外的类型。
1.1 布尔类型 (boolean)
let isDone: boolean = false;
let isActive: boolean = true;
1.2 数字类型 (number)
支持十进制、十六进制、八进制、二进制字面量。
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
1.3 字符串类型 (string)
支持普通字符串和模板字符串。
let color: string = "blue";
let fullName: string = `Bob Bobbington`;
let sentence: string = `Hello, my name is ${
fullName}`;
1.4 空值类型 (void)
通常用于函数没有返回值的情况。
function warnUser(): void {
console.log("This is my warning message");
}
1.5 Null 和 Undefined
let u: undefined = undefined;
let n: null = null;
1.6 Never 类型
表示永不存在的值的类型,通常用于抛出异常或无限循环的函数。
function error(message: string): never {
throw new Error(message);
}
1.7 Unknown 类型
类型安全的 any,使用前需要进行类型检查。
let userInput: unknown;
if (typeof userInput === "string") {
// 现在可以安全使用 userInput 作为 string
}
1.8 Any 类型
关闭类型检查,可以是任何类型。
let notSure: any = 4;
notSure = "maybe a string instead";
2. 数组类型 (Array Types)
2.1 基本数组类型
// 两种写法
let list1: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];
2.2 混合类型数组
let mixedArray: (string | number)[] = ["hello", 42, "world"];
2.3 只读数组
let readonlyArray: ReadonlyArray<number> = [1, 2, 3];
// readonlyArray[0] = 12; // 错误!只读数组不能修改
3. 元组类型 (Tuple Types)
元组是已知元素数量和类型的数组。
3.1 基本元组
let x: [string, number];
x = ["hello", 10]; // 正确
// x = [10, "hello"]; // 错误!类型顺序不匹配
3.2 可选元组元素
let optionalTuple: [string, number?] = ["hello"];
3.3 剩余元素
let restTuple: [string, ...number[]] = ["hello", 1, 2, 3];
3.4 命名元组
let namedTuple: [name: string, age: number] = ["Alice", 30];
4. 枚举类型 (Enum Types)
4.1 数字枚举
enum Direction {
Up = 1,
Down, // 2
Left, // 3
Right // 4
}
4.2 字符串枚举
enum Color {
Red = "RED",
Green = "GREEN",
Blue = "BLUE"
}
4.3 常量枚举
编译时会被内联,提高性能。
const enum Directions {
Up,
Down,
Left,
Right
}
5. 对象类型 (Object Types)
5.1 对象类型注解
let person: {
name: string; age: number } = {
name: "Alice",
age: 30
};
5.2 可选属性
let personWithOptional: {
name: string; age?: number } = {
name: "Bob"
};
5.3 只读属性
let personWithReadonly: {
readonly id: number; name: string } = {
id: 1,
name: "Charlie"
};
5.4 索引签名
let personWithIndex: {
[key: string]: any } = {
name: "David",
age: 25,
city: "New York"
};
6. 函数类型 (Function Types)
6.1 函数类型注解
function add(x: number, y: number): number {
return x + y;
}
6.2 函数表达式
let myAdd: (x: number, y: number) => number = function(x: number, y: number): number {
return x + y;
};
6.3 可选参数
function buildName(firstName: string, lastName?: