主题
索引签名
索引签名用于描述“对象可以通过动态 key 访问,并且这些 key 对应的值满足某种类型”。
基本示例
ts
interface ScoreMap {
[key: string]: number
}
const scores: ScoreMap = {
math: 90,
english: 85,
history: 88,
}常见场景
- 字典对象
- 动态 key 的配置表
- 后端返回的不固定字段结构
number 索引
ts
interface StringArray {
[index: number]: string
}
const list: StringArray = ['a', 'b', 'c']注意事项
一旦声明了字符串索引签名,对象中显式声明的属性类型也必须与索引签名兼容。
ts
interface UserMap {
[key: string]: string | number
name: string
age: number
}