Typescript中如何运用Record<K, V>?

72 阅读1分钟

TypeScript 中的 Record<K, V> 是一个工具类型(Utility Type),它用于快速定义一个对象类型,其键(key)的类型为 K,值(value)的类型为 V

1. 定义

type Record<K extends keyof any, T> = {
  [P in K]: T;
}

它通过使用映射类型(Mapped Type)的语法,遍历键类型 K 的所有属性,并为每个属性创建一个新的属性,类型为 T

这个工具类型非常有用,它可以帮助你快速定义一个对象类型,并确保类型安全。

2. 示例

(() => {
  type MyRecord<K extends keyof any, T> = {
    [P in K]: T;
  }

  type Foo = MyRecord<string, string | number | boolean | symbol>

  const a1: Foo = {
    a: "BFE.dev",
    b: 123,
    c: "BFE.dev",
    d: false
  };

  a1.placeholder = Symbol();
})();

在这个例子中,Foo 被定义为 MyRecord<string, string | number | boolean | symbol>,这意味着它是一个对象类型,其键为string字符串类型,值也为string | number | boolean | symbol类型。

使用 Record 类型可以让你更轻松地定义复杂的对象结构,并确保类型安全。

它是 TypeScript 中非常有用的一个工具类型。