ich eine Klasse an Typ-Skript haben:Typoskript - Pass gesamte Objekt Konstruktor
export class Child {
name:string;
age:number;
}
Ich möchte Klasseninstanzen zwingen, nur Eigenschaften, die Klassendeklaration hat.
Zum Beispiel, wenn ich von Feuerbasis ein Objekt erhalten:
myFirebaseService.getChild(id).then(function(child){
var currentChild = new Child(child);
})
Also, wenn das Objekt: {name: "ben", Farbe: "db"}, mag ich das Ergebnis sein:
currentChild = {"name":"ben"}
Becouse "Farbe" ist nicht Feld von "Kind".
Ich habe versucht, dieses:
export class Child {
name:string;
age:number;
constructor(tempChild:Child = null) {
if (tempChild){
for (var prop in tempChild) {
this[prop] = tempChild[prop];
}
}
}
}
Aber es hilft nicht. "currentChild" ruft alle Felder ab und hängt sie an die Klasseninstanz an.
(Natürlich kann ich den folgenden Code verwenden:
export class Child {
name:string;
age:number;
constructor(tempChild:Child = null) {
if (tempChild){
this.nam = tempChild.name;
this.age =tempChild.ageÏ;
}
}
}
, aber meine Wahrheit Klasse hat viele Felder, und ich möchte kurzen Code)
Ich denke, dass neue [keyof] (https://github.com/Microsoft/TypeScript/pull/11929) Funktion von Typescript 2.1 für Sie praktisch sein könnte. –
@AlekseyL. Nein, weil sein Problem ein Runtime-Problem ist. –