javascript - 在 TypeScript 中使用装饰器扩展类
我想用装饰器来扩展一个类,但不太清楚具体怎么做。我目前的方法如下:
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 不是一个构造函数”。
我的错误在哪里?
答案#1
你不必从装饰器中返回一个新对象。在这种情况下,目标对象将被修改,所以只需
function Foo(value: string) {
return function(target: Function) {
Object.assign(target.prototype, { foo: value });
}
}
应该可以正常工作
