Uso de tipos de clases en genéricos en TypeScript

Como tipo genérico se pueden utilizar también las clases. Solo hay que definir el tipo de clase usando su constructor. Por lo tanto, en lugar del parámetro type:T necesitamos especificar type: {new(): T;}. Hagamos una función que, a su vez, creará un nuevo usuario a partir de la clase 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 del código ejecutado:

typescript'You create a new user!'