我们什么时候应该使用Record vs {[index:string]:T}?
似乎必须添加Record
是有原因的,但是announcement和Handbook不能解释原因。
const x: { [index: string]: number } = { f: 2, 3: 5 };
const y: Record<string, number> = { f: 2, 3: 5 };
答案 0 :(得分:3)
Record
通常与键的联合使用,以获取包含这些键的类型(例如:Record<'a' | 'b', string > == { a:string, b:string}
)
如果您输入string
而不是键的并集,它将解析为索引签名,因此问题中提到的两种类型是等效的。
您使用哪一个主要取决于样式。如果我定义的类型除了索引签名外什么都没有,我更喜欢Record
。如果类型更复杂,那么我们需要拼写索引签名。