如何正确导入反射元数据

时间:2018-11-20 19:53:43

标签: typescript reflect-metadata

所以我有一个正在处理的 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 ,而不是一次在您的主文件中进行全局全局导入?

2 个答案:

答案 0 :(得分:0)

是的,这是因为反射元数据包中没有导出。

答案 1 :(得分:0)

回答我自己的问题;是的,您只需导入一次。我对项目进行了总体重新安排,其中包括将 ts-node 替换为基于 rollup 的解决方案,并删除了许多未使用的软件包。之后,现在只需导入 reflect-metada 即可。不幸的是,我无法推断出最初问题的确切原因,只能是重组后现在已经解决了。也许其他软件包正在干扰它。