У меня есть класс по типу сценария:Машинопись - передать конструктору весь объект
export class Child {
name:string;
age:number;
}
Я хочу, чтобы заставить экземпляры классов иметь только свойства, объявление класса имеет.
Например, если я получаю от firebase объекта:
myFirebaseService.getChild(id).then(function(child){
var currentChild = new Child(child);
})
Итак, когда объект: {имя: «бен», цвет: «дБ»}, я хочу, чтобы результат:
currentChild = {"name":"ben"}
Becouse "color" не является полем "child".
Я попытался это:
export class Child {
name:string;
age:number;
constructor(tempChild:Child = null) {
if (tempChild){
for (var prop in tempChild) {
this[prop] = tempChild[prop];
}
}
}
}
Но это не поможет. «currentChild» получает все поля и прикрепляет их к экземпляру класса.
(я, конечно, можно использовать следующий код:
export class Child {
name:string;
age:number;
constructor(tempChild:Child = null) {
if (tempChild){
this.nam = tempChild.name;
this.age =tempChild.ageÏ;
}
}
}
, но мой класс истина имеет много полей, и я хочу короткий код)
Я думаю, что новая функция [keyof] (https://github.com/Microsoft/TypeScript/pull/11929) может быть удобной для вас. –
@AlekseyL. Нет, потому что его проблема - время выполнения. –