没有装饰器,元数据就会丢失——但为什么呢?
const Baz = () : ClassDecorator => {
return target => {}
}
class Bar {}
@Baz()
class Foo {
constructor(bar: Bar) {}
}
console.log(Reflect.getMetadata('design:paramtypes', Foo));
这将返回
[Function: Bar]
,这很好。但没有 @Baz
装饰器(实际上什么都不做)它返回 undefined
.为什么?
最佳答案
PR实现此功能的说明:
emit design-time type metadata for decorated declarations in source.
因此,它明确设计为仅当类上有装饰器时才发出元数据。
我无法找到此决定背后的基本原理,但我猜想为所有类(js 对大小敏感)发出此代码会很浪费,并且装饰器和元数据被视为相关概念。
关于typescript - 为什么反射元数据仅在使用装饰器时才起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547005/