typescript - 如何正确导入反射元数据

标签 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,而不是在主文件中进行全局一次性导入?

最佳答案

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

关于typescript - 如何正确导入反射元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400581/

相关文章:

typescript 不发出装饰器元数据

javascript - Angular2 无法更新到 RC7 - zone.js 和反射元数据

angular - 是否有 'smoother' 编码进度条的方法?

javascript - typescript :无法从另一个模块调用函数

javascript - 无法以 Angular 加粗表格的 td 标签内的特定单词

typescript :为什么 PromiseLike 是异步函数中对象中 this 的可能类型?

json - 如何从 typescript 中的json响应中获取日期对象

node.js - Typescript 属性装饰器可以修改实例成员而不是整个类吗?

使用类装饰器时需要 Angular4 core.es5.js 未捕获的反射元数据垫片