我们说抽象类生下来就是用来当别人的父类的,抽象类中我们可以定义抽象方法,抽象方法就是没有方法体的方法,需要子类必须要对它进行一个实现。

跟我抽象类比较类似的,叫做

接口

当我们想要描述一个对象的类型

  1. type myType = {
  2. name:string,
  3. age:number,
  4. //[propname: string]:any//追加任意属性
  5. }
  6. const obj:myType = {
  7. name: 'sss',
  8. age: 11
  9. }

type myType的作用就是对我们对象这个类型做一个限制

我们可以以上的写法,我们也可以以一个接口的形式去定义

接口就是用来定义**一个类的结构**,用来定义**一个类中应该包含哪些属性和方法**。同时接口可以当成类型声明去使用

定义接口

定义接口和定义类很像:

  1. interface myInterface{}

接口里面直接来一个nameage:

  1. interface myInterface{
  2. name:string;
  3. age:number;
  4. }

和最上面的type myType很像,而且可以:

  1. const obj:myInterface = {}

都写其了(多写少些都会报错)就不会报错了

type myType定义俩个一样名字的类型会报错,而接口不会:

  1. interface myInterface(){
  2. name:string;
  3. age:number;
  4. }
  5. interface myInterface(){
  6. gender:string;
  7. }

这种语法,在ts里面是合理的。

俩个或多个合成一个为准

声明对象类型的方法

我们去声明一个对象的一个类型的时候,我们可以用别名的方式去声明一个类型;也可以用接口。俩者在这块区别不大

  • 起别名
  • 用接口

区别在于,我们接口可以在我们定义类的时候去**限制类的结构**

接口中的所有的属性都不能有实际的值

接口只定义对象的结构,而不考虑实际值

接口羽抽象类的不同

  • 抽象类当中可以有抽象方法,也可以有实质的方法
  • 在接口中所有的方法都是抽象方法

定义类的时候可以实现接口

实现接口就是使类满足接口的需求

就是接口中的所有方法和属性都要在实现类里面去实现。

注意

接口只有在ts里面有,编译成js就没有了