关于同时存在数字索引和字符串索引,两种类型返回值的问题

来源:3-12 接口 -类类型+继承接口+混合类型+接口继承类

Joshua_Lee

2020-12-07

图片描述

老黄,后面的解释还能看懂,就是不理解划线那里为什么要这么定义。难道这段话当做一个知识点硬记着就行了吗?

写回答

1回答

ustbhuangyi

2020-12-07

interface NotOkay {
  [x: number]: Animal,
  [x: stirng]: Dog
}

这样为啥不行呢,举个例子 let a:NotOkay = xxx

a[0] 的类型是一个 Animal,a['0'] 的类型是一个 Dog

由于 a[0] 会自动转换成 a['0'],相当于说 Animal 是一个 Dog,显然是不合理的。而反过来就可以,因为 Dog 是一个 Animal,Dog 是 Animal 的子类型。

0
3
Joshua_Lee
回复
ustbhuangyi
明白了,谢谢老黄
2020-12-08
共3条回复

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

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

2629 学习 · 877 问题

查看课程