请解释 TypeScript 内置工具类型 Record 的功能和典型使用场景。
考察说明
考查对 TypeScript 内置工具类型 Record 的理解,包括其定义、用途和实际应用。
回答思路
- 【回答框架 1】Record<K, T> 是 TypeScript 内置的工具类型,用于构造一个对象类型,其属性键为 K 类型,属性值为 T 类型。它本质上是一个映射类型,等价于 { [P in K]: T }。
- 【回答框架 2】Record 常用于将一组键映射到统一的值类型,例如定义枚举对应的配置对象、表单状态映射或字典结构。它简化了类型声明,避免了重复编写索引签名。
- 【回答框架 3】使用 Record 时,K 通常为字符串或数字字面量联合类型,T 可以是任意类型。若 K 为 string,则生成的对象类型允许任意字符串键,但值类型统一为 T。
- 【回答框架 4】Record 与索引签名(如 { [key: string]: T })的区别在于,Record 可以限制键为特定联合类型,提供更精确的类型检查,而索引签名则允许任意键。
- 【回答框架 5】在实际项目中,Record 常用于配置映射、状态管理、API 响应映射等场景,能提升代码的可读性和类型安全性。
- 【关键点 1】Record<K, T> 构造对象类型,键为 K,值为 T。
- 【关键点 2】等价于 { [P in K]: T },是映射类型的语法糖。
- 【关键点 3】适用于键集合固定且值类型统一的场景。
- 【关键点 4】与索引签名相比,Record 能限制键为联合类型,增强类型安全。
- 【关键点 5】常用于配置映射、状态字典等场景。
- 【易错点 1】不要将 Record 用于键类型为 number 且需要精确控制键范围的场景,因为 number 键会包含所有数字。
- 【易错点 2】Record 不会自动处理可选属性,若需要可选键,应使用 Partial 或自定义映射类型。
- 【易错点 3】避免在 K 为 string 时误以为能限制具体键名,此时实际允许任意字符串键。