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 中非常有用的一个工具类型。