Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2420

    La clase no implementa su interfaz

    Class 'L' incorrectly implements interface 'J'.…

    Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.

    La clase dijo `implements` y luego no lo hizo. El detalle de debajo nombra exactamente qué falta o qué no encaja.

    Reproducción

    interface J {
      a: number
    }
    
    class L implements J {
    }

    La compilación afirma que esto emite exactamente este código.

    Por qué lo dice el compilador

    `implements` es una comprobación, no una instrucción: no añade nada a la clase, solo pide al compilador que confirme que la clase ya satisface la interfaz. Por eso quitar la cláusula hace desaparecer el error sin hacer la clase más correcta — la interfaz nunca fue la fuente de los miembros, solo su especificación.

    Arreglos

    1. 01
      interface J {
        a: number
      }
      
      class L implements J {
        a = 1
      }

      Implementa lo prometido.

    2. 02
      interface J {
        a?: number
      }
      
      class L implements J {
      }

      O cambia la especificación, si el miembro nunca fue realmente obligatorio. Solo merece la pena cuando el resto de implementadores puede vivir sin él.

    Conclusión

    Borrar `implements` para que esto desaparezca elimina lo único que comprobaba la clase. El error es la característica.

    Errores