Typescript: Objekt klonen

Erstellt am 5. Feb. 2015  ·  3Kommentare  ·  Quelle: microsoft/TypeScript

Ich habe die Frage mehr zum Stapelüberlauf dokumentiert (http://stackoverflow.com/questions/28150967/typescript-cloning-object).

Gibt es eine Möglichkeit, ein Objekt in Typoskript zu klonen? Derzeit verwende ich den folgenden Hack

var cloneObj = new this.constructor ();

Typoskript löst jedoch den folgenden Fehler aus: Fehler TS2351: 'new' kann nicht mit einem Ausdruck verwendet werden, dessen Typ keinen Aufruf oder keine Konstruktsignatur enthält.

Question

Hilfreichster Kommentar

Wenn Sie Ihren Code von SO verwenden, funktioniert jeder dieser Casts mit den neuesten Bits und sollte in jeder Version enthalten sein, da:

    var cloneObj = new (<any>this.constructor());
    var cloneObj = new (<any>this.constructor)();
    var cloneObj = new (<any>this).constructor();

Alle 3 Kommentare

Können Sie genau klären, welches Problem Sie mit Ihrer aktuellen Antwort haben?

Das Problem ist, dass der Compiler einen Fehler auslöst, wenn ich versuche, einen Konstruktor dynamisch aufzurufen.

var cloneObj = new this.constructor(); // error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.

Die Art und Weise, wie ich den Compiler 1.3 glücklich machte, war

var cloneObj = new (<any> this.constructor());

Diese Methode funktioniert jedoch nicht mit 1.4.1.

Gibt es eine Möglichkeit, einen Konstruktor dynamisch aufzurufen?

Wenn Sie Ihren Code von SO verwenden, funktioniert jeder dieser Casts mit den neuesten Bits und sollte in jeder Version enthalten sein, da:

    var cloneObj = new (<any>this.constructor());
    var cloneObj = new (<any>this.constructor)();
    var cloneObj = new (<any>this).constructor();
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen