1.接口和抽象类很像,
描述一个对象的类型:类型声明
//描述一个对象中可以包含哪些属性
作用:对对象的类型做一个限制
2.此外还可以用接口实现上面:
接口用来定义一个类/对象的结构,用来定义一个类中包含哪些属性和方法
定义接口和定义类很像,接口也可以当成类型声明去使用(但是类型声明只能声明一个
//定义接口和定义类很像,如果多一个/少一个属性一样也会报错

//类型声明只能声明一个,相当于重复声明了,所以报错 
//而接口可以重复声明:
在ts是允许的,最终的结果其实是这两个的并集,这个接口是包含三个属性
3.声明对象类型:别名 / 接口 都可以,
这两个的区别在于:接口可以在定义类的时候去限制类的结构(类似抽象类)
接口中的所有属性都不能有实际的值,接口只定义对象的结构,而不考虑实际值(类似抽象类,但不完全像)
因为抽象类中是可以有抽象方法也可以实际方法,而接口中所有方法都是抽象方法
在接口中定义类的结构:是不能具体写方法体的
//会报错
方法在接口当中相当于抽象方法,不能写具体方法体
1)抽象类中可以有抽象方法和普通方法,而接口只能是抽象方法,
接口里面定义的东西就是用来实现的,不会给你指定具体值
2)抽象类用的是:extend继承
接口用的是:implements实现
接口就是定义一个标准,限制某个类必须符合接口的标准
4.定义类时,可以使用类去实现一个接口。意思是,使类满足接口的要求(就是要在类中将接口里面的属性和方法实现,否则会报错

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