【JS】Record<K extends keyof any, T> 具有固定键和值类型的对象

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 会报错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容