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.