Record<K, T>
Typescript是什么意思?
Typescript 2.1引入了该Record
类型,并在一个示例中进行了描述:
// For every properties K of type T, transform it to U function mapObject<K extends string, T, U>(obj: Record<K, T>, f: (x: T) => U): Record<K, U>
而高级类型页提到Record
的映射类型旁边标题下Readonly
,Partial
和Pick
,这似乎是它的定义:
type Record<K extends string, T> = { [P in K]: T; }
只读,部分和选择是同态的,而记录不是同态的。记录不是同态的一个线索是它不需要输入类型来复制以下属性:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
就是这样。除了以上引用,typescriptlang.orgRecord
上没有其他提及。
问题
有人可以给一个简单的定义
Record
吗?是
Record<K,T>
仅仅说“此对象上的所有属性都会有型的方式T
”?可能不是所有属性,因为K
都有某些用途...K
泛型是否在对象上禁止了不是的其他键K
,或者是否允许它们并且仅指示其属性未转换为T
?对于给定的示例:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
与此完全一样吗?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}