请稍等 ...
×

采纳答案成功!

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

关于索引类型

索引类型是通过index获取值的,索引可以是数字或字符串,但是索引和类有什么关系?Animal类和Dog类有索引吗?还有啥是子类型?

正在回答 回答被采纳积分+3

1回答

ustbhuangyi 2019-06-24 10:05:11

1.索引和类没什么关系啊,2 个概念,索引是用于对象属性的检索。
2.举个例子,null和undefined是所有类型的子类型,也就是说你可以把 null和undefined赋值给number类型的变量。

0 回复 有任何疑惑可以回复我~
  • 提问者 gxmln #1
    interface NotOkay {
      [x: number]: Animal
      [x: string]: Dog
    }
    这段是啥意思,根据索引返回一个类吗
    回复 有任何疑惑可以回复我~ 2019-06-24 10:06:46
  • ustbhuangyi 回复 提问者 gxmln #2
    定义 NotOkay 这个接口类型,它允许 number 类型的索引,值为 Animal 类型,也允许 string 类型的索引,值为 Dog 类型。
    但这样是不 OK 的,因为当使用 number 来索引时,JavaScript 会将它转换成string 然后再去索引对象。因为比如某个满足 NotOkay 接口的变量 a,
    a[0] 为自动转成 a['0'],也就是 Animal 类型自动转换成 Dog 类型,这样是转换不成功的,因为 Dog 是 Animal 的子类,Animal 是 Dog 的父类。
    结论:数字索引的返回值必须是字符串索引返回值类型的子类型。
    回复 有任何疑惑可以回复我~ 2019-06-24 10:14:55
  • 提问者 gxmln #3
    也就是数字索引会自动引发子类型的转换,Animal会自动转为Dog,所以说得到的其实是Dog类对吗?
    回复 有任何疑惑可以回复我~ 2019-06-24 10:19:14
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信