🥇 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.