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)
这可能很棘手.如果将TypeScript编译为JavaScript,则"类"将变为简单变量,而静态变量仅分配给它们.你可以尝试这样的事情:
Object.getPrototypeOf(object).constructor.key
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |