我有一个在 TypeScript 中使用元数据和装饰器的框架,所以我知道它正在工作。
但是,今天我刚刚发现了一个奇怪的基本案例,我无法弄清楚为什么。
它可以在 TS@2.1.5、@2.1.6 和 @2.2.0-dev.20170214 中重现
该问题可以在https://github.com/unional/some-issues/tree/ts-meta-import中进行演示
情况总结
// Foo.ts
import 'reflect-metadata'
@Reflect.metadata('somekey', 123)
export class Foo { }
Reflect.getMetadata('somekey', Foo) // returns 123
上面的代码工作正常,但是如果我尝试访问Foo
不同的文件并做同样的事情,它就不起作用:
import 'reflect-metadata'
import { Foo } from './Foo'
Reflect.getMetadata('somekey', Foo) // returns undefined
真的不应该这样......
更新:在我的框架中,我正在使用aurelia-metadata
它似乎在这种情况下工作。但问题仍然存在,为什么这种“简单”的场景不适用reflect-metadata
?