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": falseclass Base {
greet() {
return 'hi'
}
}
export class Child extends Base {
greet() {
return 'yo'
}
}Compila limpio
Con ella encendida
"noImplicitOverride": trueclass 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

