前端/移动开发面试题更新 2026-08-05

请解释 TypeScript 内置工具类型 Pick 的功能,并说明它的使用场景?

前端/移动开发技术原理TypeScript

考察说明

考查对 TypeScript 内置工具类型 Pick 的理解及其在实际开发中的应用。

回答思路

  1. 【回答框架 1】Pick<T, K> 是 TypeScript 内置的工具类型,用于从类型 T 中选取一组属性 K 来构造一个新类型。它接收两个泛型参数:第一个是源类型 T,第二个是想要选取的属性键的联合类型 K。Pick 会从 T 中提取 K 中指定的属性,组成一个新的对象类型,新类型只包含这些被选中的属性,属性的类型保持不变。
  2. 【回答框架 2】Pick 的使用场景非常广泛,常用于当我们需要一个类型只包含某个对象的特定属性时。例如,在 React 组件的 props 类型定义中,可能只需要从某个大的接口中选取部分属性作为组件的 props,这样可以减小类型的耦合度,提高代码的可维护性。另外,在函数参数的类型定义中,也可以使用 Pick 来限制参数只接受对象的某些属性,从而避免传入过多的无关数据。
  3. 【回答框架 3】Pick 的实现原理是基于映射类型(Mapped Types)和索引访问类型(Indexed Access Types)。TypeScript 内部通过遍历 K 中的每个键,并从 T 中取出对应的属性类型,最终构造出一个新的对象类型。这个工具类型非常常用,是 TypeScript 类型系统的重要组成部分。
  4. 【回答框架 4】需要注意的是,Pick 只能选取 T 中存在的属性,如果 K 中包含 T 中不存在的键,TypeScript 会报错。此外,Pick 不能用于选取可选属性(因为可选属性可能不存在),也不能用于选取索引签名。这些限制在实际使用时需要特别留意。
  5. 【关键点 1】Pick<T, K> 从 T 中选取 K 指定的属性,构造新类型。
  6. 【关键点 2】常用于组件 props 类型定义、函数参数类型收窄等场景。
  7. 【关键点 3】Pick 基于映射类型和索引访问类型实现,只能选取 T 中已有的属性。
  8. 【易错点 1】Pick 只能选取已存在的属性,不能选取可选属性或索引签名,否则会报类型错误。
  9. 【易错点 2】滥用 Pick 可能导致类型定义分散,反而降低类型可读性,应结合场景合理使用。