如何从子类的实例访问typescript中的静态属性?

Sam*_*ohn 3 javascript metaprogramming typescript

用例:我有一个基类,许多其他类继承该基类.调用基类HSManagedObject.

我有另一个调用的类HSContext,它保存一个HSManagedObjects 的字典,其中键是各种子类的名称,值是这些子类的实例的列表.我这样插入它们:

insertObject(object: HSManagedObject) { 
   this.projectObjects[object.key()].push(object)
}
Run Code Online (Sandbox Code Playgroud)

因为当我缩小我的javascript(它们都变成了t)时,类名会消失,所以我为每个被称为key唯一标识所讨论的类的类添加了一个静态属性.

当我向字典添加一个对象时,我想从实例中推断出该对象的类名.key当我不知道它属于哪个子类时,有没有办法从实例中获取静态变量?

目前我正在为每个被调用的子类添加一个实例方法,key()它返回类的静态key值并调用实例方法来获取类值.看来我不应该这样做.所以在我的所有子类中,我都有一些像这样的代码:

static key = "HSRule";
key() {
    return HSRule.key;
}
Run Code Online (Sandbox Code Playgroud)

SVS*_*idt 7

这可能很棘手.如果将TypeScript编译为JavaScript,则"类"将变为简单变量,而静态变量仅分配给它们.你可以尝试这样的事情:

Object.getPrototypeOf(object).constructor.key
Run Code Online (Sandbox Code Playgroud)

getPrototypeOf()参考