typescript - ¿Cómo sobrescribir/ocultar métodos con parámetros opcionales?
Por favor, vea los comentarios a continuación:
class MyClassA {
constructor(optionalParam?: any) {
}
initialize(optionalParam?: any) {
}
}
class MyClassB extends MyClassA {
constructor(requiredParam: any) {
super(requiredParam);
// OK.
}
// I want to override this method and make the param required
// I can add the private modifier but I want it to
// be public and hide the method with optionalParam
initialize(requiredParam: any) {
// compiler error!
}
}
¿Cómo puedo hacer esto?
¡Gracias!
Respuesta #1
El compilador te está impidiendo violar el contrato de herencia: la propuesta MyClassB no puede usarse como sustituto de MyClassA.
Considera:
var x = new MyClassB(); // Create a new MyClassB
var y: MyClassA = x; // OK
y.initialize(); // OK... but MyClassB isn't going to get a value for requiredParam
Puedes refactorizar para que MyClassB no derive de MyClassA, o cualquiera de otras opciones.
