如何正确导入反射元数据

How to import reflect-metadata correctly

所以我有一个正在处理的 TypeScript 项目,我想使用 reflect-metadata 包。我对导入它的正确方法有点困惑。据我了解,这只需要在您的 "main" 文件中导入一次。所以在我的例子中,我有一个 app.ts,我在其中导入 reflect-metadata 作为第一件事:

import 'reflect-metadata';

import ReflectionClass from '@src/Reflection/ReflectionClass';
...

ReflectionClass 然后依次导入另一个 class,最终调用 Reflect.getMetadata()。但是,这失败并出现错误

error TS2339: Property 'getMetadata' does not exist on type 'typeof Reflect'.

只有当我在相关文件中明确导入 reflect-metadata 时,错误才会消失。这是正确的方法吗?换句话说,我是否需要在每个使用它的文件中导入 reflect-metadata,而不是在主文件中一次性全局导入?

是的,这是因为reflect-metadata的包里没有export

回答我自己的问题;是的,您只需导入一次。我做了一些整体项目重新安排,其中包括将 ts-node 替换为基于 rollup 的解决方案并删除一堆未使用的包。之后,reflect-metada 的单个导入现在就可以工作了。不幸的是,我无法推断出我原来问题的确切原因,只是重组后现在解决了。也许其他一些软件包正在干扰它。