馃敟 TYPE MANIPULATION, CLASS TYPES EN GENERICS

Cuando creamos factories (f谩bricas) en TypeScript utilizando generics, se hace necesario referirse al tipo de las clases mediante sus constructores.

function crear<T>(c: { new (): T }): T {
    return new c();
}

const fecha = crear(Date);
console.log(fecha.toISOString());

Salida…

2021-04-15T12:55:46.506Z

Un ejemplo mas avanzado es el uso de la propiedad prototype para inferir y restringir las relaciones entre la funci贸n constructor y el tipo de la instancia.

class Apicultor {
    usaMascara: boolean;
}

class Zoologo {
    nombre: string;
}

class Animal {
    patas: number;
}

class Abeja extends Animal {
    cuidador: Apicultor;
}

class Leon extends Animal {
    cuidador: Zoologo;
}

function crearInstancia<A extends Animal>(c: new () => A): A {
    return new c();
}

console.log(crearInstancia(Leon).cuidador.nombre);
console.log(crearInstancia(Abeja).cuidador.usaMascara);

Este patr贸n es utilizado por para dar lugar al patr贸n de dise帽o mixins.