📋 简介
Pick 是 TypeScript 的内置工具类型,用于从一个类型中挑选出部分属性创建新类型。
🎯 核心作用
从 复杂类型 中提取 需要的字段,创建更精简的类型。
📝 基本语法
Pick<源类型, '字段1' | '字段2' | ...>
💡 经典示例
// 原始用户类型
interface User {
id: number
name: string
email: string
age: number
createdAt: Date
updatedAt: Date
}
// 只需要部分字段创建新用户
type CreateUserInput = Pick<User, 'name' | 'email' | 'age'>
// 等价于:
// interface CreateUserInput {
// name: string
// email: string
// age: number
// }
// 更新用户时只需要部分字段
type UpdateUserInput = Pick<User, 'name' | 'email'>
// 等价于:
// interface UpdateUserInput {
// name: string
// email: string
// }
🔄 与手动定义的对比
// ❌ 手动定义(容易不同步)
interface CreateUserInput {
name: string
email: string
age: number
}
// ✅ 使用 Pick(自动同步)
type CreateUserInput = Pick<User, 'name' | 'email' | 'age'>
// 当 User 的 name 类型从 string 改为 string | null 时:
// ❌ 手动定义:不会自动更新
// ✅ Pick:自动更新为 string | null
📈 性能考虑
Pick 是编译时类型操作,没有运行时开销:
// TypeScript 源码
type SimpleUser = Pick<User, 'name' | 'email'>
// 编译为 JavaScript
// 完全消失,不影响运行时性能
📋 总结
Pick 是 TypeScript 的类型操作工具,用于从已有类型中创建精简的子集类型,提高代码复用性和类型安全性。
