构造后访问 Typescript Class 属性

Access Typescript Class properties after construction

假设我有一个 class 模型 Person

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

然后在控制器中我将变量设置为这种类型的 class。

Object.keys(person)

Returns 仅定义的属性。有没有一种方法可以访问所有 class 属性而不必定义它们中的每一个?或者我是否必须在 class 中创建构造函数才能初始化对象?

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

const person = new Person();

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

但是 TypeScript 中有一个额外的陷阱...如果从未设置 属性,它不会出现在输出中,所以您的示例 class:

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