Saltar al contenido
webtype.orgwebtype.orgtsconfig

    ↑↓ mover · ⏎ abrir · esc cerrar

    tsconfig

    noImplicitOverride

    Sobrescribir tiene que ser deliberado

    Exige la palabra `override` en cualquier miembro que sustituya a uno de la clase base.

    Desde
    TypeScript 4.3
    strict
    Fuera de strict
    En tu tsconfig
    "noImplicitOverride": true

    El mismo fragmento las dos veces. Solo cambió la opción.

    Con ella apagada

    "noImplicitOverride": false
    class Base {
      greet() {
        return 'hi'
      }
    }
    
    export class Child extends Base {
      greet() {
        return 'yo'
      }
    }

    Compila limpio

    Con ella encendida

    "noImplicitOverride": true
    class Base {
      greet() {
        return 'hi'
      }
    }
    
    export class Child extends Base {
      greet() {
        return 'yo'
      }
    }

    Emite TS4114

    Por qué al compilador le importa

    El fallo que esto evita corre en la dirección contraria a la obvia. El riesgo no es escribir `override` sobre algo que no sobrescribe nada: es una clase base que añade un método que una subclase ya tiene, convirtiendo en silencio un miembro independiente en una sobrescritura que nadie revisó. Con la palabra obligatoria, el compilador se da cuenta cuando la relación cambia bajo tus pies, que es el único momento en que el dato sirve.

    Conclusión

    La palabra no es documentación. Es un cable trampa sobre la clase base.

    Adónde ir después

    22 opciones