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.