javascript - 如何像在 java 中一样在 typescript 中使用反射?
问题描述
我在 Java 中使用反射从 TestNG 注释中获取一些信息,如下面的代码片段所示:
Reflections reflections = new Reflections("", new MethodAnnotationsScanner())
Set<Method> annotated = reflections.getMethodsAnnotatedWith(Test.class)
目前,我有一个带有 jest 装饰插件的 jest 框架来帮助使用注释。
如何在 Java 中复制相同的反射方法,但在 typescript 中从注释中收集这些信息?
解决方案
请看一下 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);
推荐阅读
- vhdl - 输入数据未加载到寄存器中 - 仅在综合后时序仿真中存在问题 [VHDL][Vivado](已解决)
- r - 如何更改 R 数据框中的日期格式并添加到新列?
- kubernetes - Kubernetes:为所有 Pod/服务启用主机网络
- r - R 散点图 - 看不到我的“红色”斜线,但可以看到我的“蓝色”斜线
- c++ - 如何实现为其派生类提供功能以跟踪其实例的类模板?
- python - Missconfigures Django 设置,ModuleNotFoundError: No module named 'DeveloperRoad'
- graphql - 如何使用 sequelize-typescript 通过自定义 Apollo GraphQL 解析器查询相关对象?
- php - MySQLi 内部连接问题
- python - 如何在线性阈值模型python中启动特定节点被感染
- google-bigquery - BigQuery - 将多列连接成一列以获取大量列