Saltar al contenido
webtype.orgwebtype.org

    ↑↓ 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