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 });
}
}
應該可以正常運作
