Использование типов классов в дженериках в TypeScript

В качестве обобщенного типа можно использовать и классы. Toлько нужно задать тип класса с помощью его конструктора. Следовательно вместо параметра type:T нам надо указать type: {new(): T;}. Давайте сделаем функцию, которая в свою очередь создаст нового пользователя из класса 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);

Результат выполненного кода:

typescript'You create a new user!'