馃敟 CLASSES, GENERICS (GENERICS DENTRO DE CLASES)

Las clases al igual que las interfaces, pueden ser gen茅ricas. Cuando una clase es instanceada con el constructor new, su tipo es inferido de la misma forma que cuando se llama a una funci贸n.

class Caja<T> {
    contenido: T;

    constructor(value: T) {
        this.contenido = value;
    }
}

type Juguete = {
    nombre: string;
};

const misJuguetes: Juguete[] = [];
misJuguetes.push({ nombre: "Pelota" });
misJuguetes.push({ nombre: "Consola" });

const miCajaDeJuguetes: Caja<Juguete[]> = new Caja(misJuguetes);

type Maquillaje = {
    nombre: string;
};

const miMaquillaje: Maquillaje[] = [];
miMaquillaje.push({ nombre: "Sombras" });
miMaquillaje.push({ nombre: "Labial" });

const miCajaDeMaquillaje: Caja<Maquillaje[]> = new Caja(miMaquillaje);

Las clases pueden utilizar restricciones y valores por default de la misma forma que las interfaces.

Types en par谩metros de clases est谩ticas

El siguiente c贸digo generar谩 un error…

class Caja<T> {
    static valorPorDefault: T; // <- Static members cannot reference class type parameters.
}

Los elementos est谩ticos de una clase gen茅rica nunca pueden ser referidos a par谩metros de tipo ya que generan un error en tiempo de ejecuci贸n.