可索引类型接口的理解,不知道对不对

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

慕粉6137024

2021-03-01

老师,可索引类型那里的Animal和Dog可不可以这样理解:

//相当于Dog 继承了Animal的name
interface a {
    breed:string,
    name:string
}
//相当于Animal
interface b{
    name:string
}

interface c {
    [index:number]:a
    [index:string]:b
}

interface d {
    [index:number]:b //报错 数字索引类型“b”不能赋给字符串索引类型“a”
    [index:string]:a
}

结论:
以number查索引值可以隐式转换为string,相当于可以通过number,string 类型查索引值而string查索引值,则只能通过string查索引值

string,nubmer 继承于string
string,number为"子" --> Dog
string为“父” --> Animal


//类似的例子
interface two{
    x:number,
    y:number
}
interface three{
    x:number,
    y:number,
    z:number
}
//这里two是three的父类
let x:two = {x:1,y:2}
let y:three = {x:1,y:2,z:4}

x =y //OK
y =x //报错,需要z
写回答

1回答

ustbhuangyi

2021-03-03

你举得例子和继承没有关系喔,他们之间不存在父子关系,只是接口定义的属性不同

0
3
慕粉6137024
非常感谢!
2021-03-04
共3条回复

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

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

2629 学习 · 877 问题

查看课程