类型定义
Record 的类型定义是下面这样:
type Record<K extends string | number | symbol, T> = { [P in K]: T; }
Record 的作用:构造一个对象类型,其属性键为 K,其属性值为 T。
解释类型
其一
K extends string | number | symbol
Record 需要传递一个类型 K,K 是 string、number、symbol 三个类型中的一个。
构造的对象类型属性值是类型 T,T 的类型可以是基础类型、对象、数组、函数等,实际上没有约束类型 T 到底长什么样,只要是合法的类型都可以。
其二
{ [P in K]: T; }
Record 返回的结果,这个对象的键就是前面类型 K 推导出来的结果。假如传递的是 string,那么类型 K 就是 string,因此类型 P 就是 string。
举个例子:
keys 类型是一个联合类型,有 string、number。KeyName 约束对象的键类型属于类型 keys,即对象的键可以是 string、number 类型,其值是 string 类型。因此,obj 对象构造 "hello"
、888
是可以通过的。
实际使用
约束一个对象,对象键类型是 number,值也是一个对象:
标签:string,对象,number,TS,Record,类型,工具 From: https://www.cnblogs.com/Himmelbleu/p/17305802.html