Classes, Sobrecarga

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.