Skip to content

索引签名

索引签名用于描述“对象可以通过动态 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
}

基于 MIT 许可发布