Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何找到所有装饰有特定装饰的类?_Typescript_Typescript1.5 - Fatal编程技术网

Typescript 如何找到所有装饰有特定装饰的类?

Typescript 如何找到所有装饰有特定装饰的类?,typescript,typescript1.5,Typescript,Typescript1.5,在Java中,我们可以使用“类路径扫描”找到所有具有给定注释的类 我们如何在TypeScript中执行类似的操作?有没有办法找到所有带有装饰的类?下面是一个例子。它假定您有某种引用范围的方式。magical类装饰器在应用它的类上创建一个名为isMagical的字符串属性,并将其值指定为“确实”。然后,findMagicalInScope()函数循环指定范围内的属性(这就是类都在模块中的原因),并查看它们是否具有isMagical属性 module myContainer { @magica

在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!

正确的方法是从decorator处理程序填充静态集合。

当类位于单独的文件中时,我们可以这样做吗?是否有类似全局范围的东西可以用于搜索所有文件?如果您在浏览器中,您可能可以使用
窗口
对象。否则,您将不得不以某种方式收集它们,就像将您感兴趣的所有内容都设置为对象上的属性一样。我可以找到类似于类的访问器吗?您确定吗?