I have an app that initializes by running its method .init(params)
like this:
app.init([TopBar, StatusBar, MainArea]);
Where TopBar
, StatusBar
and MainArea
are classes, not instances of classes. Each of these classes implements the same interface IComponent
.
I want to instantiate objects from the passed classes in the .init(params)
method, like this:
init(params: IComponent[]): void {
params.map(function (component) {
let comp = new component();
this.components[comp.constructor.name] = comp;
}, this);
The issue is that as these are not instance, TypeScript doesn't know their types and throws an error:
error TS2345: Argument of type '(typeof TopBar | typeof StatusBar |
typeof MainArea)[]' is not assignable to parameter of type
'IComponent[]'.
How do I fix the code so that I could pass an array of classes that implement some interface to a method?