Ошибка TypeScript "This expression is not constructable"
TypeScript
Иногда в TypeScript можно словить ошибку “This expression is not constructable”, например:
class Foo {}
function factory<T>(cls: T): T {
return new cls(); // This expression is not constructable.
}
const foo = factory(Foo);
Смысл этой ошибки в том что TypeScript не может распознать, что мы передаем в качестве аргумента функцию-конструктор. Можно явно указать, что передаваемое нами значение является функцией-конструктором.
class Foo {}
type Constructable<T = any> = new (...args: any[]) => T;
function factory<T>(cls: Constructable<T>): T {
return new cls();
}
const foo = factory(Foo);