TypeScript 什么是“implements”子句
在TypeScript中,implements子句用于验证一个类是否符合特定的接口。如果一个类未能正确实现一个接口,将会产生一个错误。类可以实现一个单一的接口或多个接口。
示例1: 创建了一个名为A的接口,它具有一个类型为void的display函数。类B和类C实现了接口A。类B没有引发错误,因为display方法被正确实现,但是类C拥有一个Display()方法,该方法与接口定义的方法不同,所以TypeScript编译器引发一个错误,指出类“C”错误地实现了接口“A”。
Javascript
// Creating an interface
interface A {
display(): void;
}
class B implements A {
display() {
console.log("B");
}
}
class C implements A {
// Throws error: Class 'C' incorrectly
// implements interface 'A'.
// Property 'display' is missing in type
// 'C' but required in type 'A'.
Display() {
console.log("C");
}
}
输出:
error TS2420: Class 'C' incorrectly implements interface 'A'.
Property 'display' is missing in type 'C' but required in type 'A'.
class C implements A {
~
display(): void;
~~~~~~~~~~~~~~~~
'display' is declared here.
示例2: 如果在接口中存在一个额外的属性,除非定义了这些属性,否则它不会在实现接口的类中存在。在这种情况下,TypeScript编译器会引发错误。
JavaScript
interface A {
propA: number;
propB: number;
}
class B implements A {
propA = 0;
}
const obj = new B();
obj.propB = 3;
输出:
参考: https://www.typescriptlang.org/docs/handbook/2/classes.html#implements-clauses