在Java中,我们可以使用“类路径扫描”找到具有给定注释的所有类。
我们如何在TypeScript中做类似的事情?有没有办法找到装饰有一些装饰的所有课程?
答案 0 :(得分:5)
这是一个例子。它假设您有一些参考范围的方法。 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!
答案 1 :(得分:0)
正确的方法是从装饰器处理程序填充静态集合。