获取Typescript中所有私有成员列表的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Typescript中所有私有成员列表的方法?相关的知识,希望对你有一定的参考价值。

就像标题所说,我希望能够获得一个Typescript类/实例的私有成员列表。

我在测试期间尝试了这个,但我担心我会得到所有成员,并且不能在运行时判断成员是否是私有的。此外,我不确定如何对静态成员做同样的事情。

type Constructor<T> = new () => T;

export default function <T> (classX: Constructor<T>) {
    var c = new classX()
    var made = Object.getOwnPropertyNames(c);

    for (var i of made) { console.log(i) }
}
答案

也许只是用private_前置你的方法并获取私有成员,因为在运行时所有只是对象的属性,js中没有反射。这可以通过在typescript中使用reflect-metadata来实现,但是,你需要指定私有方法的数组。或者只需创建____privateMembers____静态属性来跟踪这些元数据(通常这是在动态类型语言中完成的,如js和python)

以上是关于获取Typescript中所有私有成员列表的方法?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能访问 TypeScript 私有成员?

遍历类成员并赋值

JavaScript 和 TypeScript 的封装性 —— 私有成员

JavaScript 和 TypeScript 的封装性 —— 私有成员

Java子类访问父类的私有成员变量

如何在Typescript中对私有方法进行单元测试