TypeScript类型定义中[stuff2: string]方括号语法的含义是什么?
TypeScript索引签名详解
先看你给出的代码:
export type MyType = { stuff1?: { [stuff2: string]: Stuff3; }; }
你对MyType的理解是正确的,这里重点解释[stuff2: string]: Stuff3的含义:
- 这是字符串索引签名,用来约束这个子对象的键值对规则:
- 子对象的所有属性键必须是字符串类型(注意:JavaScript中数字键会被自动转为字符串,所以数字键也符合这个规则)
- 每个属性的值必须严格符合
Stuff3类型
stuff2只是一个占位符名称,换成[key: string]或者[prop: string]都不影响功能,它只是用来指代子对象的任意键名
举个符合该类型的实例:
// 假设Stuff3是已定义的类型 const demoStuff1 = { "user": { /* 符合Stuff3结构的内容 */ }, "product": { /* 符合Stuff3结构的内容 */ }, "randomKey123": { /* 符合Stuff3结构的内容 */ } };
简单来说,这个子对象就是一个字符串键到Stuff3类型的映射字典,可以包含任意数量的符合规则的键值对。
内容的提问来源于stack exchange,提问作者Saqib Ali
相关产品推荐
相关产品推荐

