在 Java 中,我们可以使用“类路径扫描”找到所有具有给定注释的类。
我们如何在 TypeScript 中做类似的事情?有没有办法找到所有装饰有一些装饰的班级?
在 Java 中,我们可以使用“类路径扫描”找到所有具有给定注释的类。
我们如何在 TypeScript 中做类似的事情?有没有办法找到所有装饰有一些装饰的班级?
这是一个例子。它假定您有某种引用范围的方法。magical
类装饰器创建一个字符串属性,调用它应用到的isMagical
类,并将其值分配为“确实”。然后该findMagicalInScope()
函数遍历指定范围内的属性(这就是类都在一个模块中的原因)并查看它们是否具有isMagical
属性。
module myContainer {
@magical
export class foo {
}
export class bar {
}
@magical
export class bas {
}
}
function magical(item: any) {
item.isMagical = "indeed";
}
function findMagicalInScope(theScope: any) {
for(let prop in theScope) {
if (theScope[prop]["isMagical"]) {
console.log(`Is ${prop} magical? ${theScope[prop]["isMagical"]}!`);
} else {
console.log(`${prop} is not magical. :-(`);
}
}
}
findMagicalInScope(myContainer);
在 Node.js 中运行时将生成此输出:
Is foo magical? indeed!
bar is not magical. :-(
Is bas magical? indeed!
正确的方法是从装饰器处理程序中填充静态集合。