如何找到所有 类 装饰有某种装饰?
How to find all classes decorated with a certain decoration?
在 Java 中,我们可以使用 "classpath scanning".
找到所有具有给定注释的 类
我们如何在 TypeScript 中做类似的事情?有没有办法找到所有 类 装饰有一些装饰?
举个例子。它假定您有某种引用范围的方法。 magical
class 装饰器在其应用的 class 上创建了一个名为 isMagical
的字符串 属性,并将其值分配为 "indeed".然后 findMagicalInScope()
函数循环遍历指定范围内的属性(这就是 classes 都在一个模块中的原因)并查看它们是否具有 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);
当 运行 in Node.js 时将生成此输出:
Is foo magical? indeed!
bar is not magical. :-(
Is bas magical? indeed!
正确的方法是从装饰器处理程序填充静态集合。
在 Java 中,我们可以使用 "classpath scanning".
找到所有具有给定注释的 类我们如何在 TypeScript 中做类似的事情?有没有办法找到所有 类 装饰有一些装饰?
举个例子。它假定您有某种引用范围的方法。 magical
class 装饰器在其应用的 class 上创建了一个名为 isMagical
的字符串 属性,并将其值分配为 "indeed".然后 findMagicalInScope()
函数循环遍历指定范围内的属性(这就是 classes 都在一个模块中的原因)并查看它们是否具有 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);
当 运行 in Node.js 时将生成此输出:
Is foo magical? indeed!
bar is not magical. :-(
Is bas magical? indeed!
正确的方法是从装饰器处理程序填充静态集合。