【发布时间】:2020-06-26 21:13:11
【问题描述】:
我在 Project A(主库)中创建了一个装饰器,并希望在 Project B 中启动应用程序时自动加载所有这些装饰器(项目使用项目 A)。有没有办法做到这一点?
index.ts 看起来像这样:
export function MyDecorator<T extends Controller>() {
return (target: new () => T) => {
// Do stuff with the decorator
}
}
const server = http.createServer((req, res) => {
})
server.listen(8080)
我可以做些什么来在 Project B 中的所有类上自动执行 @MyDecorator() 而无需 Project B 这样做?
MyClass1.ts
import { MyDecorator } from 'project-a'
@MyDecorator()
export class ProjectBClass1 {}
MyClass2.ts
import { MyDecorator } from 'project-a'
@MyDecorator()
export class ProjectBClass2 {}
【问题讨论】:
-
我不确定你能做到这一点,节点有
global,但我不确定它是否有帮助。您在其中一个开源库中有任何示例吗?我只知道 NestJS,它导出了装饰器。 -
我从未使用过 NestJS,但查看文档可能是我想要的,但我不确定。在文档中,他们似乎从来没有引用过他们的控制器,他们只是创建了它们,它们就在那里,这就是我想要的。
-
不,你仍然需要在 NestJS 中导入它的装饰器,我的意思是,如果你有任何我想深入研究的开源示例。我只在 NestJS 和 Angular 中使用 TS,它们总是导出它。我没有看到任何全球实施。
-
@mandaputtra 导入装饰器很好,我只是不想导入
MyClass1.ts或MyClass2.ts,我希望它们是自动导入的。 -
@GetOffMyLawn -- 你找到一个好的解决方案了吗?
标签: javascript node.js typescript decorator typescript-decorator