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

标签 javascript typescript

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

相关文章:

javascript - http 在 ng-view 范围内获取响应

javascript - Node.js mongodb 驱动程序异步/等待查询

Angular 2 : Why do I need classes like Hero. ts?

javascript - document.readyState 在 Firefox 和 Chrome 中不起作用

javascript - 访问 Vuetify 作用域槽内表 colspan 的 number prop 值

postgresql - 有没有办法在 TypeORM 的选择部分绑定(bind)参数?

javascript - 仅删除嵌套对象中的特定键

typescript - Nest.js 无法解决对 TestingModule 的循环依赖

interface - 扩展 typescript 界面

javascript - 随机背景更改仅适用于 Firefox?