如何从子类的实例访问打字稿中的静态 属性?
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
用例:
我有一个基础 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