所以我正在开发一个 TypeScript 项目,并且我想使用 reflect-metadata 包。我对导入这个的正确方法有点困惑。据我了解,这只需要在“主”文件中导入一次。因此,就我而言,我有一个 app.ts,其中我导入 reflect-metadata 作为第一件事:
import 'reflect-metadata';
import ReflectionClass from '@src/Reflection/ReflectionClass';
...
ReflectionClass
然后依次导入另一个类,最终调用 Reflect.getMetadata()
。但是,这会失败并出现错误
error TS2339: Property 'getMetadata' does not exist on type 'typeof Reflect'.
只有当我在相关文件中显式导入reflect-metadata时,错误才会消失。这是执行此操作的正确方法吗?换句话说,我是否需要在使用它的每个文件中导入reflect-metadata,而不是在主文件中进行全局一次性导入?
最佳答案
回答我自己的问题;是的,您只需导入一次。我进行了一些整体项目重新安排,其中包括将 ts-node 替换为基于 rollup 的解决方案,并删除一堆未使用的包。之后,一次导入reflect-metada现在就可以工作了。不幸的是,我无法推断出原来问题的确切原因,只是在重组后现在已经解决了。也许其他一些软件包正在干扰它。
关于typescript - 如何正确导入反射元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400581/