type A = { name: string; age: number; address: string };
// 抽出 name 和 age
type SubsetA = Pick<A, "name" | "age">;
// { name: string; age: number }type A = { name: string; age: number; address: string };
// 排除 name 和 address,保留 age
type SubsetB = Omit<A, "name" | "address">;
// { age: number }type A = { name: string; age: number };
// 添加 time 属性
type B = A & { time: Date };
// { name: string; age: number; time: Date }interface A { name: string; age: number }
// 继承并新增属性
interface B extends A { time: Date }
// { name: string; age: number; time: Date }// 类型抽出
type User = { id: string; name: string; age: number };
type UserAge = Pick<User, "age">; // { age: number }
type UserWithoutId = Omit<User, "id">; // { name: string; age: number }
// 类型合并
type Timestamp = { createdAt: Date };
type UserWithTime = User & Timestamp;
// { id: string; name: string; age: number; createdAt: Date }| 场景 | 工具 | 示例 |
|---|---|---|
| 保留少量属性 | Pick<T, K> |
`Pick<User, "id" |
| 排除少量属性 | Omit<T, K> |
Omit<User, "age"> |
| 扩展新属性 | & 或 extends |
User & { role: string } |
掌握这些工具类型,可以灵活操作 TypeScript 的类型系统!