我们在前面的时候有提过 interface 是用来定义物件的型别,对物件的形状进行描述。在物件导向程序语言中,介面(Interfaces)是一个很重要的概念,它是对行为的一种抽象,而具体如何行动则需要由类别(class)去实现(implement)。
我们可以使用 implements 来检查是否有满足介面的形状。
//报警器
interface Alarm {
alert();
}
//门是一个类别
class Door {
}
//防盗门是门的子类别, 有一个报警器的功能, 新增报警方法
class SecurityDoor extends Door implements Alarm {
alert() {
console.log('SecurityDoor alert');
}
}
//车的类别也有报警器的功能,新增报警方法
class Car implements Alarm {
alert() {
console.log('Car alert');
}
}
const car = new Car();
car.alert();//Car alert
可以使用,
来实现多个介面:
interface Alarm2 {
alert():void;
}
interface Light2 {
lightOn():void;
lightOff():void;
}
//Car 实现了 Alarm 和 Light 介面,既能报警,也能开关车灯。
class Car2 implements Alarm2, Light2 {
alert() {
console.log('Car alert');
}
lightOn() {
console.log('Car light on');
}
lightOff() {
console.log('Car light off');
}
}
const car2 = new Car2();
car2.lightOn(); //Car light on
介面与介面之间可以是继承关系:
interface Alarm3 {
alert():void;
}
interface LightableAlarm extends Alarm3 {
lightOn():void;
lightOff():void;
}
class Car3 implements LightableAlarm {
alert() {
console.log('Car alert');
}
lightOn() {
console.log('Car light on');
}
lightOff() {
console.log('Car light off');
}
}
const car3 = new Car3();
car3.alert(); //Car alert
介面也可以继承class:
class Point {
x: number;
y: number;
constructor(x = 0,y = 0){
this.x = x;
this.y = y;
}
}
interface Point3d extends Point {
z: number;
}
const point3d: Point3d = {x: 1, y: 2, z: 3};
console.log(point3d); //{ x: 1, y: 2, z: 3 }
感谢阅读! 明天见~
https://willh.gitbook.io/typescript-tutorial/advanced/class-and-interfaces
>>: Day27:今天我们来聊一下IoT and OT Hacking
上一篇内部稽核讲到 5. 监督作业:进行下列监督作业,以确定本制度之有效性、及时性及确实性: (1)...
在VSCode操作Github提取 *於左方点选 【原始档控制】,点选【•••】 ,点选【提取、推送...
今天尝试了前几天被我放弃的题目,过一两天後果然比较有感觉,花了一点时间还是完成了呢,心情不错 题号:...
既然讲到运算符号,也讲完了运算的优先顺序,那就来说说运算的简写吧 一般我们写运算时会写:"...
保持同步 资料工程师修炼之路走到现在,真的没有一个系统能同足满足资料储存、查询和逻辑处理,现实世界的...