Я пытаюсь написать фабричный метод, который возвращает классы, например:
getWidget<T extends WidgetBase>(componentName: string): Type<T> {
switch (componentName) {
default:
throw new Error(`Widget ${componentName} is not registered in the system`);
case "Widget2":
return Widget2Component;
}
}
, где Widget2Component - это класс, определенный в другом файле (угловой компонент), который является производным от WidgetBase, и абстрактный класс,Тип <> - это угловой интерфейс, определенный следующим образом:
interface Type<T> extends Function {
new (...args: any[]): T
}
Компилятор жалуется:
Тип 'typeof Widget2Component' не может быть назначен типу 'Type<T>'
.Тип 'Widget2Component' нельзя назначить типу 'T'
.
, но я не понимаю, почему ... Widget2Component расширяет WidgetBase!