什么时候应该使用Record <string,t =“”> vs {[index:string]:T}? [TypeScript

时间:2019-04-29 11:39:27

标签: typescript record

我们什么时候应该使用Record vs {[index:string]:T}?

似乎必须添加Record是有原因的,但是announcementHandbook不能解释原因。

const x: { [index: string]: number } = { f: 2, 3: 5 };
const y: Record<string, number> = { f: 2, 3: 5 };

1 个答案:

答案 0 :(得分:3)

Record通常与键的联合使用,以获取包含这些键的类型(例如:Record<'a' | 'b', string > == { a:string, b:string}

如果您输入string而不是键的并集,它将解析为索引签名,因此问题中提到的两种类型是等效的。

您使用哪一个主要取决于样式。如果我定义的类型除了索引签名外什么都没有,我更喜欢Record。如果类型更复杂,那么我们需要拼写索引签名。