У меня есть приложение, которое инициализирует, запустив его метод .init(params)
так:Как ввести массив с классами в TypeScript?
app.init([TopBar, StatusBar, MainArea]);
Где TopBar
, StatusBar
и MainArea
классы, а не экземпляры классов. Каждый из этих классов реализует один и тот же интерфейс IComponent
.
Я хочу, чтобы создавать объекты из пройденных классов в методе .init(params)
, как это:
init(params: IComponent[]): void {
params.map(function (component) {
let comp = new component();
this.components[comp.constructor.name] = comp;
}, this);
Вопрос заключается в том, что, как это не экземпляр, машинопись не знает, их типы и выдает ошибку:
error TS2345: Argument of type '(typeof TopBar | typeof StatusBar | typeof MainArea)[]' is not assignable to parameter of type 'IComponent[]'.
Как исправить код, чтобы я мог передать массив классов, реализующих некоторый интерфейс для метода?
Почему бы не использовать функцию заводскую вместо того, чтобы использовать новый в классе? – davestevens