📝 基本语法
// 基本类型别名
type ID = string;
type Age = number;
// 对象类型别名
type User = {
id: ID;
name: string;
age: Age;
};
const user: User = {
id: 'U001',
name: 'Alice',
age: 30
};
🔀 联合类型
// 联合类型:多个类型之一
type Status = 'pending' | 'approved' | 'rejected';
type ID = string | number;
let status: Status = 'pending';
status = 'approved'; // OK
status = 'active'; // Error: 不是联合类型的成员
// 实际应用
type Direction = 'up' | 'down' | 'left' | 'right';
function move(direction: Direction) {
// ...
}
move('up'); // OK
move('forward'); // Error
💡
联合类型
联合类型使用 | 连接多个类型,表示值可以是其中任意一种。常用于字面量类型和枚举替代。
& 交叉类型
// 交叉类型:合并多个类型
type Named = { name: string };
type Aged = { age: number };
// 交叉类型合并所有属性
type Person = Named & Aged;
const person: Person = {
name: 'Alice',
age: 30
};
// 与接口交叉
interface Employee {
id: string;
}
type Staff = Person & Employee;
const staff: Staff = {
name: 'Bob',
age: 25,
id: 'E001'
};
🔧 高级用法
// 函数类型
type Callback = (data: string) => void;
type Handler = (event: Event) => boolean;
// 元组类型
type Point = [number, number];
type Coordinate = [x: number, y: number, z?: number];
// 映射类型
type Readonly<T> = {
readonly [K in keyof T]: T[K];
};
type Partial<T> = {
[K in keyof T]?: T[K];
};
// 条件类型
type NonNullable<T> = T extends null | undefined ? never : T;