🎯 学习目标

  • 理解类型别名的概念和作用
  • 掌握 type 的各种用法
  • 学会联合类型和交叉类型
  • 了解 type 与 interface 的区别

📝 基本语法

// 基本类型别名 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;

📝 本节小结

  • • type 用于定义类型别名
  • • | 创建联合类型,表示多种类型之一
  • • & 创建交叉类型,合并多个类型
  • • type 比 interface 更灵活,支持更多场景