Ответ 1
Давайте рассмотрим, что все "неопределенные" свойства, т.е. Все свойства, которые определены в классе типов типов (я написал "не определен" и не был undefined
по причине, которая будет ясна ниже)
class A {
prop1: string
prop2: number
}
не будет перечисляться ни одним из Object.keys
или this.hasOwnProperty(k)
поскольку JavaScript- this.hasOwnProperty(k)
не знает этих свойств. У вас есть только один вариант, когда вы создаете свой класс типов, то есть для инициализации всех свойств по умолчанию, например
class A {
prop1: string
prop2: number
prop3: B
constructor() {
this.prop1="";
this.prop2=-1;
this.prop3=null;
}
}
На этом этапе вы получите все свойства экземпляра A
как в этой итерации отображения из словаря
var a = new A();
for (var i in properties) {
if (a.hasOwnProperty(i)) {
a[i]=properties[i];
}
}
Если вам не нравится решение по умолчанию, вы все равно можете это сделать, используя ключевое undefined
ключевое слово javascript, чтобы вы это сделали:
class A {
prop1: string = undefined
prop2: number = undefined
}
В этот момент javascript-копия будет иметь все свойства в модели, и вы будете перебирать их с помощью Object.keys(this)
или проверять их через this.hasOwnProperty