Ich habe eine Anwendung, die durch Ausführen seiner Methode .init(params)
wie folgt initialisiert:Wie ein Array mit Klassen in TypeScript eingeben?
app.init([TopBar, StatusBar, MainArea]);
Wo TopBar
, StatusBar
und MainArea
Klassen sind nicht Instanzen von Klassen. Jede dieser Klassen implementiert die gleiche Schnittstelle IComponent
.
Ich möchte Objekte aus den übergebenen Klassen in der .init(params)
Methode instanziiert, wie folgt aus:
init(params: IComponent[]): void {
params.map(function (component) {
let comp = new component();
this.components[comp.constructor.name] = comp;
}, this);
Das Problem ist, dass, da diese nicht Instanz sind, nicht Typoskript nicht ihre Typen kennen und wirft einen Fehler:
error TS2345: Argument of type '(typeof TopBar | typeof StatusBar | typeof MainArea)[]' is not assignable to parameter of type 'IComponent[]'.
Wie repariere ich den Code, so dass ich ein Array von Klassen übergeben könnte, die eine Schnittstelle zu einer Methode implementieren?
Warum nicht eine Fabrik-Funktion verwenden, anstatt zu versuchen neu auf der Klasse zu benutzen? – davestevens