Uso de tipos de classe em genéricos no TypeScript

Você também pode usar classes como um tipo genérico. No entanto, é necessário definir o tipo da classe usando seu construtor. Portanto, em vez do parâmetro type:T, precisamos especificar type: {new(): T;}. Vamos criar uma função que, por sua vez, criará um novo usuário a partir da classe User:

typescriptfunction getUser <T> (type: { new (): T; }): T {
  return new type();
}

class User {
  constructor() {
    console.log('You create a new user!');
  }
}

let user: User = getUser(User);

Resultado da execução do código:

typescript'You create a new user!'