在Typescript中,可以通过使用反射机制来获取类的私有成员列表。具体的方法如下:
reflect-metadata
库。可以通过以下命令进行安装:npm install reflect-metadata
reflect-metadata
库,并使用 Reflect.getMetadataKeys
方法获取所有元数据的键。代码示例如下:import "reflect-metadata";
class MyClass {
private privateField: string;
public publicField: number;
constructor() {
this.privateField = "private";
this.publicField = 123;
}
}
const keys = Reflect.getMetadataKeys(MyClass.prototype);
console.log(keys);
design:private
开头。可以通过 Reflect.getMetadata
方法获取具体的私有成员值。代码示例如下:import "reflect-metadata";
class MyClass {
private privateField: string;
public publicField: number;
constructor() {
this.privateField = "private";
this.publicField = 123;
}
}
const keys = Reflect.getMetadataKeys(MyClass.prototype);
const privateKeys = keys.filter(key => key.startsWith("design:private"));
const privateValues = privateKeys.map(key => Reflect.getMetadata(key, MyClass.prototype));
console.log(privateValues);
通过以上方法,可以获取到Typescript中类的所有私有成员列表。请注意,这种方法依赖于 reflect-metadata
库,并且只能获取到被装饰器或元数据标记的私有成员。
领取专属 10元无门槛券
手把手带您无忧上云