我想用装饰器扩展一个类,但不知道具体如何。我目前的做法如下:
function Foo(value: string) {
return function(target: Function) {
let injected = Object.assign(target.prototype, { foo: value });
return injected;
}
}
@Foo("Hello world")
class Bar {
}
let instance = new Bar();
console.log(instance.foo); // Should say "Hello World"
但我不能再实例化我的类:“TypeError:Bar不是构造函数”。
我的错误在哪里?
答案 0 :(得分:1)
您不必从装饰器返回新对象。在这种情况下,目标对象将被修改,所以只需
function Foo(value: string) {
return function(target: Function) {
Object.assign(target.prototype, { foo: value });
}
}
应该可以正常工作