请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于索引接口的问题

两个问题,望解答,谢谢!
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回答

interface StringArray {
  [index: number]: string
}

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

interface StringArray {
  [a: number]: string
}

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


1 回复 有任何疑惑可以回复我~
  • 提问者 Mi_Rai #1
    第二个问题也麻烦回一下,谢谢!
    回复 有任何疑惑可以回复我~ 2021-09-10 15:03:30
  • ustbhuangyi 回复 提问者 Mi_Rai #2
    [index: string]: number 表示它是一个 key 为 string 类型,值为 number 的索引签名。
    length: number 表示 key 为 length 字符串,值为 number 类型,是具体的属性类型定义。
    回复 有任何疑惑可以回复我~ 2021-09-10 21:55:36
  • 提问者 Mi_Rai #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-09-14 08:35:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信