Una clase que extiende a tra puede reescribir sus propiedades. Si deseamos acceder a los elementos de una clase padre, cuyo clase hijo ha sobreescrito sus propiedades, podemos utilizar la sentencia super
para acceder a ellos.
TypeScript fuera a una clase derivada a tener siempre un subtipo de la clase base.
class Padre {
saludar() {
console.log("Hola");
}
}
class Hijo extends Padre {
saludar(nombre?: string) {
if (!!nombre) {
console.log(`Hola ${nombre}`);
} else {
super.saludar();
}
}
}
const hijo = new Hijo();
hijo.saludar();
hijo.saludar("Luis");
Salida…
Hola
Hola Luis
Es importante que una clase drivada siga las bases de la clase padre (o clase contrato). Recuerda que es muy común que se haga una referencia a una instancia de la clase derivada a través de una clase base.
const h: Padre = new Hijo();
Es importante seguir las indicaciones del contrato, si cambiamos la definición de alguno de los métodos heredados, de forma que se vuelven incompatibles, el compilador de TypeScript generará un error.