2017-09-10 3 views
1

Neu in Typoskript, ich stieß auf Typescript-Klasse wie folgt.Kann kein Typoskript-Klassenobjekt erstellen

export class Errors { 
    errors: { [key: string]: string } = {}; 
} 

Ich versuche, dieses Fehlerobjekt manuell zu erstellen. Kannst du die Verwendung von diesem zeigen? Ich habe Folgendes versucht.

errList: Errors = new Errors(); 

errList = {'key':'value'}; 

errList = [ 
     { 
     Key: "code1", 
     value: "err1" 
     }, 
     { 
     Key: "code2", 
     value: "err2" 
     }, 
    ] 

errList.errors = { 
    [key1]:"myValueX" , [key3]:"myValueY" 
}; 

Antwort

1

Um die Klasse zu initialisieren, wie Sie es erklärt Sie verwenden würde:

var err = new Errors(); 
err.errors = { 
    "key": "value" 
}; 

Eine weitere Alternative auch einen Konstruktor zu definieren wäre, dann Sie wie folgt initialisieren könnte:

export class Errors { 
    constructor(public errors: { [key: string]: string } = {}){}; 
} 

var err = new Errors({ 
    "key": "value" 
}); 

Wenn Sie keine Fehler in der Klasse haben, könnten Sie stattdessen auch eine Schnittstelle verwenden und dann würden Sie keinen Konstruktor benötigen und Sie könnten einfach Objektliterale verwenden, um zu initialisieren:

Welches Sie wählen, ist eine Frage der Präferenz und Ihres Anwendungsfalls. Ich würde für die Konstruktorversion gehen, wie es am prägnantesten zu initialisieren ist, aber Sie können auch den Operator instanceof verwenden, was die Schnittstellenversion nicht tut.

+0

Danke Für die Optionen ... funktioniert die Konstruktor-Version auch für mich am besten. – Davvit

+0

Gut zu helfen :) –

0

Ihre Klasse:

export class Errors { 
    errors: { [key: string]: string } = {}; 
} 

hat ein Datenelement errors, aber Sie dies nur tun:

errList: Errors = new Errors(); 
errList = {'key':'value'}; 

Versuchen Sie stattdessen für die zweite Zeile zu tun:

errList.errors = {'key', 'value'};