TypeScript 中的“实现”子句是什么?
在 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");
}
}
Javascript
interface A {
propA: number;
propB: number;
}
class B implements A {
propA = 0;
}
const obj = new B();
obj.propB = 3;
输出:
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:如果接口中存在附加属性,则除非定义了属性,否则不会使该属性存在于实现它的类中。在这种情况下,打字稿编译器会引发错误。
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