我想用装饰器扩展一个类,但不知 Prop 体怎么做。我目前的做法如下:
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 is not a constructor”。
我的错误在哪里?
最佳答案
您不必从装饰器返回一个新对象。在这种情况下目标对象将被修改,所以只是
function Foo(value: string) {
return function(target: Function) {
Object.assign(target.prototype, { foo: value });
}
}
应该没问题
关于javascript - 在 TypeScript 中使用装饰器扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471713/