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

How do I access a static property in typescript from an instance of a subclass?

用例: 我有一个基础 class,许多其他 class 都继承自该基础。 基数 class 称为 HSManagedObject

我有另一个名为 HSContext 的 class,它保留了 HSManagedObject 的字典,其中键是各种子 class 的名称,值是这些子 classes 的实例列表。我这样插入它们:

insertObject(object: HSManagedObject) { 
   this.projectObjects[object.key()].push(object)
}

因为 class 名称在我缩小 javascript 时消失了(它们都变成了 t),所以我为每个 [=31] 添加了静态 属性 =]es 称为 key,唯一标识有问题的 class。

当我将对象添加到字典时,我想从实例中推断出该对象的 class 名称。当我不知道它属于哪个 subclass 时,有没有办法从实例中获取静态 key 变量?

目前我正在为每个名为 key() 的子class添加一个实例方法,returns class 的静态 key 值并调用实例方法获取 class 值。看来我不需要这样做。所以在我所有的 subclasses 中,我都有这样的代码:

static key = "HSRule";
key() {
    return HSRule.key;
}

这可能很棘手。如果 TypeScript 被编译成 JavaScript,"classes" 就变成了简单变量,静态变量只是分配给它们。 你可以尝试这样的事情:

Object.getPrototypeOf(object).constructor.key

getPrototypeOf() Reference