没有装饰器,元数据会丢失 - 但为什么呢?
const Baz = () : ClassDecorator => {
return target => {}
}
class Bar {}
@Baz()
class Foo {
constructor(bar: Bar) {}
}
console.log(Reflect.getMetadata('design:paramtypes', Foo));
这会返回[Function: Bar]
,这很好。但如果没有@Baz
装饰器(几乎没有任何东西),它将返回undefined
。为什么呢?
答案 0 :(得分:1)
实现此功能的PR说明:
在源代码中为修饰声明发出设计时类型元数据。
因此它明确被设计为只在类上有装饰器时发出元数据。
我无法找到这个决定背后的理由,但我猜它为所有类发出这个代码会很浪费(js对大小敏感),装饰器和元数据被视为相关概念。