Search code examples
typescriptobject-properties

How to iterate through all properties and its values in Typescript class


How do I iterate through list of class properties and get the values of each (only the properties and not the functions)

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;
 }
}

Please help.


Solution

  • You can't do that, if you look at the compiled code of:

    class Person {
        name: string;
        age: number;
        address: Address;
    }
    

    You'll see that those properties aren't part of it:

    var Person = (function () {
        function Person() {
        }
        return Person;
    }());
    

    Only if you assign a value then the property is added:

    class Person {
        name: string = "name";
    }
    

    Compiles to:

    var Person = (function () {
        function Person() {
            this.name = "name";
        }
        return Person;
    }());
    

    You can use a property decorator for that.