gpt4 book ai didi

javascript - 在 TypeScript 中使用装饰器扩展类

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:58 27 4
gpt4 key购买 nike

我想用装饰器扩展一个类,但不知 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com