Как перебрать все свойства и их значения в классе Typescript
Как перебрать список свойств класса и получить значения каждого (только свойства, а не функции)
class Person{
name:string;
age:number;
address:Address;
getObjectProperties(){
let json = {};
// I need to get the name, age and address in this JSON and return it
// how to do this dynamically, rather than getting one by one
// like json["name"] = this.name;
return json;
}
}
Пожалуйста помоги.
2 ответа
Решение
Вы не можете сделать это, если вы посмотрите на скомпилированный код:
class Person {
name: string;
age: number;
address: Address;
}
Вы увидите, что эти свойства не являются частью этого:
var Person = (function () {
function Person() {
}
return Person;
}());
Только если вы присваиваете значение, свойство добавляется:
class Person {
name: string = "name";
}
Компилируется в:
var Person = (function () {
function Person() {
this.name = "name";
}
return Person;
}());
Вы можете использовать декоратор свойства для этого.
Примечание: я предполагаю, что вы присвоили значения для ваших полей, как name
, Если это не так, это не сработает.
// if you want json as a string
getObjectProperties(){
let json = JSON.stringify(this);
}
или же
// if you want a copy of the fields and their values
getObjectProperties(){
let json = JSON.parse(JSON.stringify(this));
}
или если вы хотите пройтись по свойствам, посмотрите дубликаты итерации по свойствам объекта