在构造之后访问Typescript类属性

时间:2017-12-15 12:06:22

标签: javascript typescript angular5

我们说我有一个班级模型Person

export class Person {
    name:string;
    lastname:string;
}

在控制器中,我为这种类设置了一个变量。

Object.keys(person)

仅返回已定义的属性。有没有办法访问所有类属性而无需定义它们中的每一个?或者我是否必须在类中创建一个构造函数才能初始化对象?

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式迭代实例成员:

const person = new Person();

Object.getOwnPropertyNames(person).forEach((val, idx, array) => {
    console.log(val);
});

但是在TypeScript中有一个额外的问题...如果从未设置过属性,它就不会出现在输出中,所以你的示例类是:

class Person {
    name:string;
    lastname:string;
}

如果您只创建一个新实例而没有设置然后设置值,实际上没有属性,即:

var Person = /** @class */ (function () {
    function Person() {
    }
    return Person;
}());

如果要查看它们,请创建构造函数参数,或设置默认值。

构造函数参数:

class Person {
    constructor(public name: string, public lastname: string) { }
}

默认值:

class Person {
    name: string = '';
    lastname: string = '';
}