构造后访问 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 = '';
}
假设我有一个 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 = '';
}