Подпись типа для не-абстрактного класса (неабстрактная конструкторская функция) в TypeScript заключается в следующем:
declare type ConstructorFunction = new (...args: any[]) => any;
Это также называется новым типом. Однако мне нужна сигнатура типа для абстрактного класса (функция абстрактного конструктора). Я понимаю, что он может быть определен как имеющий тип Function
, но это слишком широко. Разве нет более точной альтернативы?
Edit:
Чтобы уточнить, что я имею в виду, следующий небольшой фрагмент демонстрирует разницу между абстрактным конструктором и неабстрактным конструктором:
declare type ConstructorFunction = new (...args: any[]) => any;
abstract class Utilities {
...
}
var UtilityClass: ConstructorFunction = Utilities; // Error.
Тип 'typeof Utilities' не присваивается типу 'new (... args: any []) = > any'.
Невозможно присвоить тип абстрактного конструктора неструктурированному типу конструктора.