📋 简介

PickTypeScript 的内置工具类型,用于从一个类型中挑选出部分属性创建新类型。

🎯 核心作用

从 复杂类型 中提取 需要的字段,创建更精简的类型。

📝 基本语法

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 的类型操作工具,用于从已有类型中创建精简的子集类型,提高代码复用性和类型安全性。