关于索引接口的问题

来源:3-11 接口 - 额外属性检查+函数类型+可索引的类型

Mi_Rai

2021-09-10

两个问题,望解答,谢谢!
1、这里定义的 index 有什么特殊含义吗,还是随便定义的?换成其他 abc 行吗?
还是说调用 myArray[0]、myArray[1] 这种必须使用 [index: number] 的形式?

interface StringArray {
  [index: number]: string
}

2、[index: string] 这种写法和 length 这种写法有什么区别吗?
是不是 [index: string] 表示可以调用 myArray[0]、myArray[1]
而 length 只能调用 myArray[length] ?

interface NumberDictionary {
  [index: string]: number;
  length: number;    // 可以,length是number类型
  name: string       // 错误,`name`的类型与索引类型返回值的类型不匹配
}
写回答

1回答

ustbhuangyi

2021-09-10

interface StringArray {
  [index: number]: string
}

是一种索引签名index 只是表明 key 的值number 表示 key 的类型这里用 index 是从语义化的角度考虑的

interface StringArray {
  [a: number]: string
}

你这么写也是 ok 的但语义化就差了。


1
3
Mi_Rai
非常感谢!
2021-09-14
共3条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2631 学习 · 877 问题

查看课程