2016-08-11 5 views
0

Gibt es einen Grund, warum die folgenden Codeblöcke aus initialisers rechtliche Syntax in Typoskript 1,8:Typoskript Array Initialisers mit Objekt Initialisers

class A 
{ 
    public textField: string; 
} 

var instanceOfClass = new A 
{ 
    textField = "HELLO WORLD" 
}; 

var arrayCollection = new A[] 
{ 
    new A(), new A() 
}; 

... aber der folgende Code-Block ist nicht wahr?

var arrayCollection = new A[] 
{ 
    new A 
    { 
     textField = "HELLO" 
    }, 
    new A 
    { 
     textField = "WORLD" 
    } 
}; 

Es scheint seltsam, dass Transcript erlaubt Ihnen Arrays und Objekte zu initialisieren, aber Sie können sonst nicht verschachtelt Objekt initialisers innerhalb eines Arrays initialiser.

+0

Was ist der Fehler? –

+0

"',' erwartet 'um die erste geschweifte Klammer für jedes im Array initialisierte Objekt. –

Antwort

0

Dies ist keine gültige Typoskript Syntax:

class A { 
    public textField: string; 
} 

var instanceOfClass = new A { 
    textField = "HELLO WORLD" 
}; 

Der Compiler beschwert sich:

Name 'textfield'

Wenn Sie möchten, setzen Sie ein Mitglied Wert kann nicht gefunden werden, wenn instanziieren dann übergeben Sie es einfach als Konstruktor Parameter:

class A { 
    public textField: string; 

    constructor(textField: string) { 
     this.textField = textField; 
    } 
} 

var instanceOfClass = new A("HELLO WORLD"); 

Oder die Kurzversion:

class A { 
    constructor(public textField: string) { 
     this.textField = textField; 
    } 
}