Typescript 如何找到所有装饰有特定装饰的类?
在Java中,我们可以使用“类路径扫描”找到所有具有给定注释的类Typescript 如何找到所有装饰有特定装饰的类?,typescript,typescript1.5,Typescript,Typescript1.5,在Java中,我们可以使用“类路径扫描”找到所有具有给定注释的类 我们如何在TypeScript中执行类似的操作?有没有办法找到所有带有装饰的类?下面是一个例子。它假定您有某种引用范围的方式。magical类装饰器在应用它的类上创建一个名为isMagical的字符串属性,并将其值指定为“确实”。然后,findMagicalInScope()函数循环指定范围内的属性(这就是类都在模块中的原因),并查看它们是否具有isMagical属性 module myContainer { @magica
我们如何在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!
正确的方法是从decorator处理程序填充静态集合。当类位于单独的文件中时,我们可以这样做吗?是否有类似全局范围的东西可以用于搜索所有文件?如果您在浏览器中,您可能可以使用
窗口
对象。否则,您将不得不以某种方式收集它们,就像将您感兴趣的所有内容都设置为对象上的属性一样。我可以找到类似于类的访问器吗?您确定吗?