首页 > 解决方案 > 在 Typescript 中获取所有 Private 成员列表的方法?

问题描述

就像标题所说的那样,我希望能够获得 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) }
}

标签: typescripttypesprivateprivate-members

解决方案


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


推荐阅读