2017-09-01 1 views
-1

vielleicht eine alte Frage. Aber ich habe keine richtige Antwort gefunden.TypScript JSON zur Klasse mit "es5"

Was ist die beste/common Art und Weise ist ein JSON in eine Klasse in Typoskript mit ES5 (keine Object.assign()) zu werfen.

z.B.

export class Lesson{ 
name:string; 
teacher:Teacher; 
date:Date; 
scholars:Array<string>; //or string[] ... I dont care 
} 

Die JSON würde wie folgt aussehen:

{ 
name:"LessonName", 
teacher:{name:"masterT", age:120}, 
date:12345678912 
scholars:["Jim","Bob","Jimbo"] 
} 

In Typoskript ich die JSON zu einem Objekt werfen kann und sogar direkt zu einer Lektion Objekt zuweisen (-horrible Verhalten, aber das ist JS- !)

Aber das Objekt haben keine Methoden zum Beispiel.

z.B. Also lesson.date.getTime() wird nicht funktionieren.

Also, wie geht das richtig? Oder gibt es eine gute Anleitung/Doku dafür?

+0

Mögliches Duplikat von [Wie initialisiere ich ein Typescript-Objekt mit einem JSON-Objekt] (https://stackoverflow.com/questions/22885995/how-do-i-initialize-a-typescript-object-with-a- json-object) – jcalz

+0

Dies ist der Job für den 'Konstruktor' einer Klasse. Auf diese Weise können Sie das Datumsfeld in ein Date-Objekt usw. umwandeln, so dass Sie 'neue Lektion (Attribute)' – Fotis

Antwort

0

Versuchen

// first declare variable 
var lesson: Lesson; 

// and then assign that 
lesson={ 
name:"LessonName", 
teacher:{name:"masterT", age:120}, 
date:12345678912 
scholars:["Jim","Bob","Jimbo"] 
} 

Aber das Problem ist, dass Sie nur einen Wert in einem Objekt platzieren wollen.

+0

ausführen können. Das ist kein gültiges TypeScript, und die Frage wird auch nicht richtig beantwortet (zum Beispiel ist die 'date' -Eigenschaft kein a "Date" -Objekt.) – jcalz

+0

Ich habe die Antwort bearbeitet –

+0

Aber "Lektion" ist immer noch keine Instanz der "Lektion" -Klasse. Sie müssen etwas wie "Lektion = neue Lektion()" machen und dann Eigenschaften einstellen. Und "Datum" ist immer noch kein "Datum". Entschuldigung, aber das ist keine richtige Antwort. – jcalz