首页 > 解决方案 > 如何像在 java 中一样在 typescript 中使用反射?

问题描述

我在 Java 中使用反射从 TestNG 注释中获取一些信息,如下面的代码片段所示:

Reflections reflections = new Reflections("", new MethodAnnotationsScanner())
Set<Method> annotated = reflections.getMethodsAnnotatedWith(Test.class)

目前,我有一个带有 jest 装饰插件的 jest 框架来帮助使用注释。

如何在 Java 中复制相同的反射方法,但在 typescript 中从注释中收集这些信息?

标签: javascriptjavareflectionjestjsts-jest

解决方案


请看一下 Typescript 的Decorators + Reflect Metadata API,它也可以为 TS 编译器启用。它的工作方式与 Java 不完全相同,但您仍然可以收集有关带注释的实体的所需信息。如何收集带注释的类的小例子:

const myTypes: any[] = []

@annotation
class MyClass {
  type = "report";
  title: string;
 
  constructor(t: string) {
    this.title = t;
  }
}

function annotation(constructor: Function) {
    myTypes.push(constructor)
}

console.log('All annotated classes', myTypes);


推荐阅读