2016-08-12 10 views
0

wie ein Objekt erstellen, basierend auf der Art eines anderen Objekts in Typoskriptein Objekt erstellen, basierend auf der Art eines anderen Objekts in Typoskript

obj1 = new Object();

obj2 = new "obj1.constructor.name"

Ich habe so zu tun, weil Object 1 kann verschiedene Klassen haben.

+3

'neue obj1. constructor() 'sollte funktionieren. Übrigens hat das nichts mit TypeScript zu tun. –

+0

Wenn ich obj1.constructor verwende, habe ich diesen Fehler "" Kann 'neu' nicht mit einem Ausdruck verwenden, dessen Typ einen Aufruf oder eine Signatur enthält. "" – imtah

+1

Könnten Sie bitte weitere Informationen hinzufügen? Es ist nicht klar, was Sie wirklich wollen. Möchten Sie eine andere Klasse erben/erweitern? –

Antwort

2

Der Typoskript Compiler wird sich beschweren, wenn Sie versuchen zu tun:

new obj1.constructor() 

Aber man kann es sagen, dass es so in Ordnung ist:

class A {} 

class B extends A {} 

type AConstructor = { 
    new(): A; 
} 

type BConstructor = { 
    new(): B; 
} 

let a1 = new A(); 
let a2 = new (a1.constructor as AConstructor)(); 

let b1 = new B(); 
let b2 = new (b1.constructor as BConstructor)(); 

(code in playground)

Verwandte Themen