interview
typescript-frontend
TypeScript 的内置工具类型 Record 有什么作用

前端 TypeScript 面试题, TypeScript 的内置工具类型 Record 有什么作用?

前端 TypeScript 面试题, TypeScript 的内置工具类型 Record 有什么作用?

QA

Step 1

Q:: TypeScript 的内置工具类型 Record 有什么作用?

A:: Record 是 TypeScript 中的一个工具类型,用于构造一个对象类型,其属性键的类型是 K,属性值的类型是 T。K 可以是字符串字面量类型或联合类型,T 则代表属性值的类型。这个工具类型非常适合在你需要创建特定键值对对象时使用。

Step 2

Q:: Record 类型的典型使用场景是什么?

A:: Record 类型通常用于需要将一组特定键映射到一组特定值的场景。例如,当你需要创建一个配置对象,其键是一些预定义的常量,而值是相应的配置数据时,Record 类型就非常有用。

Step 3

Q:: 你能给出 Record 类型的一个简单例子吗?

A:: 当然,假设你有一组字符串常量表示不同的语言代码,你希望将这些代码映射到它们的名称,你可以使用 Record 类型:

 
const languages: Record<string, string> = {
  'en': 'English',
  'fr': 'French',
  'de': 'German'
};
 

Step 4

Q:: 如何定义一个更严格的 Record 类型?

A:: 为了让 Record 类型更严格,你可以指定更具体的键和值的类型。例如,假设你有特定的一组键:

 
const languages: Record<'en' | 'fr' | 'de', string> = {
  'en': 'English',
  'fr': 'French',
  'de': 'German'
};
 

这样,只有 'en', 'fr', 'de' 作为键是合法的,任何其他键都会导致类型错误。

Step 5

Q:: Record 类型与 Partial 类型有什么区别?

A:: Record 和 Partial 都是 TypeScript 提供的工具类型,但它们的用途不同。Record 用于创建一个键类型和值类型固定的对象,而 Partial 用于将一个对象类型的所有属性设为可选。换句话说,Record 是为对象添加结构,而 Partial 是从已有的对象类型中派生一个更松散的版本。

用途

面试这个内容的目的是评估候选人对 TypeScript 工具类型的理解,以及他们如何使用这些类型来增强代码的可读性和健壮性。Record 类型在实际生产环境中常用于定义具有固定结构的对象,比如配置对象、翻译字典、权限映射等场景。掌握 Record 类型有助于提高代码的类型安全性,避免由于意外的键或值类型错误而导致的运行时错误。\n

相关问题

🦆
TypeScript 中的 Partial 类型有什么作用?

Partial 类型用于构造一个类型,该类型将使原始对象类型的所有属性变为可选。这在你希望基于现有类型创建一个类似但更宽松的版本时非常有用。

🦆
TypeScript 中的 Readonly 类型有什么作用?

Readonly 类型用于创建一个类型,其所有属性都是只读的。这意味着对象的属性不能被重新分配。它用于确保对象在创建后不被意外修改。

🦆
TypeScript 中的 Pick 类型如何使用?

Pick 类型用于从现有类型中选择一些属性,并构造一个包含这些属性的新类型。这在你需要基于现有类型创建一个子集类型时非常有用。

🦆
TypeScript 中的 Omit 类型如何使用?

Omit 类型用于从现有类型中排除一些属性,并构造一个不包含这些属性的新类型。这在你需要排除某些属性创建新类型时非常有用。

🦆
Mapped Types 在 TypeScript 中有什么作用?

Mapped Types 是 TypeScript 中的一种高级类型,用于基于已有类型创建新的对象类型,且可以对其键和值进行重新映射。这在需要灵活地转换类型时非常有用。