最佳答案
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>
看到打字稿2.1
而先进的类型页面在映射类型标题下提到了Record,旁边是Readonly, Partial和Pick,这似乎是它的定义:
type Record<K extends string, T> = { [P in K]: T; }
Readonly、Partial和Pick是同态的,而Record不是。Record不是同态的一个线索是,它不需要输入类型来复制属性:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
就是这样。除了上面的引用,在typescriptlang.org上没有其他提到Record。
Record一个简单的定义吗?
Record<K,T>仅仅是表示“此对象上的所有属性都将具有__abc1类型”的一种方式吗?可能不是所有属性,因为K有一些用途…
K泛型是否禁止对象上非K的附加键,还是允许它们,只是表明它们的属性没有转换为T?
与给定的例子:
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
和这个完全一样吗?:
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}