đŸ„‡ Classes, Abstract Classes (clases abstractas)

Las clases, métodos y propiedades pueden ser declaradas como abtract (abstractas) en TypeScript.

Un mĂ©todo y/o una propiedad abstracta es un mĂ©todo que no ha sido implementado. Cuando una clase no tiene ningĂșn mĂ©todo abstracto, se le conoce como concrete (concreta).

No es posible instanciar una clase abstracta, como se ve en el siguiente ejemplo.

abstract class Base {
  abstract getNombre(): string;

  imprimirNombre() {
    console.log(`Mi nombre es ${this.getNombre()}`);
  }
}

const miInstancia = new Base(); // <- esta lĂ­nea generara un error pues
                                // no se puede instancear una clase abstracta

Pero si es posible instanciar aquellas que la implementan.

abstract class Base {
  abstract getNombre(): string;

  imprimirNombre() {
    console.log(`Mi nombre es ${this.getNombre()}`);
  }
}

class Derivada extends Base {
  getNombre(): string {
    return "Laura";
  }
}

const miInstancia = new Derivada();
miInstancia.imprimirNombre();
Mi nombre es Laura

Si no implementamos alguno de los métodos abstractos de una clase abstracta, esto generarå un error en el compilador.