Здравствуйте. Имеется абстрактный класс для реализации базовой функциональности компонент. И вот настал час выполнить продуктовую сборку и приключилась ошибка. Класс зерегистрирован в CommonAppModule, который несет в себе объявления общеупотребимых компонент проекта:
@NgModule({
exports: [
CommonComponentsClass
...
],
declarations: [
CommonComponentsClass
...
]
})
export class CommonAppModule{}
А вот сам класс. Ничего хитрого в общем:
@Component({
selector: '',
template: ''
})
export abstract class CommonComponentsClass<T> implements OnInit, OnDestroy {
abstract initState(): void;
abstract formSubmit(): void;
...
}
Со стороны среды разработки сразу получю ошибку:
ERROR in src/app/share/common.app.module.ts(64,3): error TS2322: Type 'typeof CommonComponentsClass' is not assignable to type 'any[] | Type<any>'.
Type 'typeof CommonComponentsClass' is not assignable to type 'Type<any>'.
Cannot assign an abstract constructor type to a non-abstract constructor type.
Как решить эту ошибку?
Есть конечно вариант вместо абстрактных функций в базовом классе наклепать функции, которые будут вызывать исключения и вынуждать разработчика перекрывать эти функции, но как-то не симпатично мне это решение.