我们什么时候应该使用 Record<string, T> vs { [index: string]: T } ? [打字稿
When should we use Record<string, T> vs { [index: string]: T } ? [TypeScript
我们什么时候应该使用 Record vs { [index: string]: T } ?
看来 Record
肯定是有原因的,但是 announcement and Handbook 没有解释为什么。
const x: { [index: string]: number } = { f: 2, 3: 5 };
const y: Record<string, number> = { f: 2, 3: 5 };
Record
通常与键并集一起使用以获得包含这些键的类型(例如:Record<'a' | 'b', string > == { a:string, b:string}
)
如果您传入 string
而不是键并集,这将解析为索引签名,因此问题中提到的两种类型是等效的。
您使用哪一个主要是风格问题。如果我定义的类型只有索引签名,我更喜欢Record
。如果类型比较复杂,那么我们需要拼出索引签名。
我们什么时候应该使用 Record vs { [index: string]: T } ?
看来 Record
肯定是有原因的,但是 announcement and Handbook 没有解释为什么。
const x: { [index: string]: number } = { f: 2, 3: 5 };
const y: Record<string, number> = { f: 2, 3: 5 };
Record
通常与键并集一起使用以获得包含这些键的类型(例如:Record<'a' | 'b', string > == { a:string, b:string}
)
如果您传入 string
而不是键并集,这将解析为索引签名,因此问题中提到的两种类型是等效的。
您使用哪一个主要是风格问题。如果我定义的类型只有索引签名,我更喜欢Record
。如果类型比较复杂,那么我们需要拼出索引签名。