Classes, Herencia

Así como sucede en otros lenguajes orientados a objetos, las clases en JavaScript pueden heredar de otras clases utilizando la clausula implements.

Se puede utilizar implements para verificar que una clase satisface una interface particular. Un error será disparado si no se ha implementado correctamente.

Por ejemplo si tenemos la siguiente interface.

interface Encendible {
    encender(): void;
}

Al implementar la clase podemos ver que esto nos genera un error mientras no se haya definido el método de la interface encender.

class Television implements Encendible {}

Por ello requerimos que se implementen todos los métodos de la clase Encendible.

class Television implements Encendible {
    encender(): void {
        console.log("El televisor se ha encendido");
    }
}

Las clases pueden implementar diferentes interfaces, por ejemplo Class Television implements Endendible, Apagable, Sintonizable {}.

Precauciones

Es importante entender que la clausula implements solo verifica que la clase sea tratada como un tipo equivalente a la interface. No cambia el tipo de la clase o sus métodos de ninguna forma. Un error común es asumir que la clausula implements cambiará el tipo de la clase, pero esto no sucede.

interface Verificable {
    verificar(nombre: string): boolean;
}

class NombreVerificable implements Verificable {
    verificar(nombre): boolean {
        // <- nombre se convierte en un parámetro typo any
        return nombre.toLowerCase();
    }
}