📜  TypeScript 中的“实现”子句是什么?

📅  最后修改于: 2022-05-13 01:56:17.597000             🧑  作者: Mango

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