interface Human {
// new (name:string):void; //不能约束类的构造函数
name:string;
eat():void;
}
class Asian implements Human {
constructor(name:string){ //接口也不能约束类的构造函数
this.name = name
}
name:string;
// private name:string; //接口不能约束类的私有属性
eat(){}
sleep(){}
}
/**
* 接口只能约束类的公有成员
*/
// 接口继承接口
interface Man extends Human{
run():void
}
interface Child {
cry():void
}
interface Boy extends Man,Child {}
let boy:Boy = {
name:'',
run(){},
eat(){},
cry(){}
}
// 接口继承类: 接口把类的成员都抽象了出来 有类的结构 但没有具体实现
class Auto {
state = 1
// private state2 = 0
}
interface AutoInterface extends Auto {}
class C implements AutoInterface {
state = 2
// c不是子类 所以private属性无法实现 报错
}
class Bus extends Auto implements AutoInterface {
// 因为是Auto的子类 , 已经继承了state 就不用再实现了
// 注意: 接口在抽离类的成员的时候,不仅抽离了公共成员, 还有私有成员和受保护成员
}
![](https://img2020.cnblogs.com/blog/1062069/202005/1062069-20200509142238942-402614082.png)