¿Qué son las cláusulas de ‘implementos’ en TypeScript?

En Typescript , se puede usar una cláusula implements para verificar que una clase se ajusta a una interfaz específica. Si una clase no logra implementar una interfaz correctamente, se generará un error. Las clases pueden implementar una sola interfaz o múltiples interfaces a la vez.

Ejemplo 1: Se crea una interfaz A con una función de visualización de tipo void. La clase B y la clase C implementan la interfaz A. La clase B no genera un error ya que la visualización del método se implementa correctamente, pero la clase C tiene un método Display(), que es diferente del método definido en la interfaz, por lo que el compilador de TypeScript genera un error esa clase ‘C’ implementa incorrectamente la interfaz ‘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");
  }
}

Producción:

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.

Ejemplo 2: si existe una propiedad adicional en una interfaz, esa propiedad no existe en la clase que la implementa a menos que se definan las propiedades. En tales casos, el compilador TypeScript genera errores.

Javascript

interface A {
  propA: number;
  propB: number;
}
  
class B implements A {
  propA = 0;
}
  
const obj = new B();
obj.propB = 3;

Producción:

Referencia: https://www.typescriptlang.org/docs/handbook/2/classes.html#implements-clauses

Publicación traducida automáticamente

Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *