1.接口和抽象类很像,
    描述一个对象的类型:类型声明image.png//描述一个对象中可以包含哪些属性image.png
    作用:对对象的类型做一个限制

    2.此外还可以用接口实现上面:
    接口用来定义一个类/对象的结构,用来定义一个类中包含哪些属性和方法
    定义接口和定义类很像,接口也可以当成类型声明去使用(但是类型声明只能声明一个
    //定义接口和定义类很像,如果多一个/少一个属性一样也会报错image.pngimage.png
    //类型声明只能声明一个,相当于重复声明了,所以报错 image.png
    //而接口可以重复声明:image.png在ts是允许的,最终的结果其实是这两个的并集,这个接口是包含三个属性
    image.png
    3.声明对象类型:别名 / 接口 都可以,
    这两个的区别在于:接口可以在定义类的时候去限制类的结构(类似抽象类)

    接口中的所有属性都不能有实际的值,接口只定义对象的结构,而不考虑实际值(类似抽象类,但不完全像)
    因为抽象类中是可以有抽象方法也可以实际方法,而接口中所有方法都是抽象方法
    在接口中定义类的结构:是不能具体写方法体的image.png//会报错
    方法在接口当中相当于抽象方法,不能写具体方法体image.png
    1)抽象类中可以有抽象方法和普通方法,而接口只能是抽象方法,
    接口里面定义的东西就是用来实现的,不会给你指定具体值
    2)抽象类用的是:extend继承
    接口用的是:implements实现
    接口就是定义一个标准,限制某个类必须符合接口的标准
    4.定义类时,可以使用类去实现一个接口。意思是,使类满足接口的要求(就是要在类中将接口里面的属性和方法实现,否则会报错
    image.pngimage.png

    5.接口,所以接口实际上就是定义了一个规范,对类的限制,
    只要实现了接口,就意味着满足了规范,这样就可以在指定的场景当中去使用
    e.g.游戏里面有各种各样的抢:手枪、冲锋枪、步枪
    但对于玩家来说,只要是枪,都能开。
    那么它怎么样才是枪?那就是一定要满足特点需求:得有枪口、可以装子弹、得有扳机。这样就是枪
    所以接口就是:对类的限制,只要实现了接口,满足了要求,就能在特定场景中用

    6.接口、抽象类、都是ts才有的新增的,js里是没有的,所以在ts中定义接口、抽象类,编译成js之后是看不见的,只有被编译出来的class