type Record<K extends keyof any, T>
Record<K extends keyof any, T>
是 TypeScript 中的一个通用类型,它用于创建一个对象类型,这个对象的键(key)必须是 K
类型的子集,而值(value)的类型则为 T
。
这个类型的定义是:
type Record<K extends keyof any, T> = {
[P in K]: T;
};
这个类型的主要用途是创建具有固定键和值类型的对象。例如,如果你想要创建一个对象,这个对象的键是 'name' 和 'age',而值都是字符串类型的,你可以这样使用 Record
类型:
type Person = Record<'name' | 'age', string>;
const person: Person = {
name: 'John Doe',
age: '30'
};
在这个例子中,Person
类型是一个具有两个键('name' 和 'age')的对象,这两个键都关联到字符串类型的值。
你也可以使用 Record
类型创建一个对象,这个对象的键是某个类型的所有键:
type NullablePerson = Record<'name' | 'age', string | null>;
const nullablePerson: NullablePerson = {
name: null,
age: null
};
在这个例子中,NullablePerson
类型是一个具有两个键('name' 和 'age')的对象,这两个键都关联到字符串或 null 类型的值。
注意:Record<K extends keyof any, T>
类型的 K
必须是有效的属性键类型,即它必须是 string
| number
| symbol
类型之一。如果你尝试使用其他类型的值作为 K
的值,TypeScript 会报错。