📅  最后修改于: 2023-12-03 15:05:39.881000             🧑  作者: Mango
在 TypeScript 中,我们可以通过 class
来定义一个类,类里面可以包含属性和方法。有时候我们需要获取类的属性名或者属性值,本文将介绍如何在 TypeScript 中获取类属性。
要获取类的属性名,可以使用 Object.getOwnPropertyNames()
方法,该方法返回一个数组,数组的元素是对象自身的属性名(不包括继承的属性名)。
class Person {
name: string;
age: number;
}
const person = new Person();
const propertyNames = Object.getOwnPropertyNames(person);
console.log(propertyNames); // output: ["name", "age"]
要获取类的属性值,可以使用 obj[key]
或者 obj.property
的方式,其中 key
为属性名, property
为属性名所对应的属性。
class Person {
name: string;
age: number;
}
const person = new Person();
person.name = 'Alice';
person.age = 18;
console.log(person['name']); // output: "Alice"
console.log(person.age); // output: 18
如果属性名是动态的,可以使用 obj[key]
的方式来获取属性值。
class Person {
name: string;
age: number;
}
const person = new Person();
person['name'] = 'Alice';
person['age'] = 18;
console.log(person['name']); // output: "Alice"
console.log(person['age']); // output: 18
可以使用 Reflect.ownKeys()
方法来获取对象自身的属性名和 Symbol 属性名,然后通过 obj[propertyName]
或者 obj.propertyName
的方式来获取属性值。
class Person {
protected name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
const person = new Person('Alice', 18);
const propertyNames = Reflect.ownKeys(person);
for (const name of propertyNames) {
console.log(`${name}: ${person[name as string]}`);
}
// output: "name: Alice", "age: 18"
其中 Reflect.ownKeys()
方法返回一个数组,包含了对象自身所有的属性名和 Symbol 属性名。需要注意的是,需要将 name
强制转换为字符串类型,否则 TypeScript 会提示错误。