Как перебрать все свойства и их значения в классе 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));
}

или если вы хотите пройтись по свойствам, посмотрите дубликаты итерации по свойствам объекта

Другие вопросы по тегам