【发布时间】:2018-02-28 09:52:58
【问题描述】:
根据typescript decorators documentation,用于替换构造函数的装饰器示例不会将任何参数传递给装饰器函数。我怎样才能做到这一点?
医生是这么说的
function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
return class extends constructor {
newProperty = "new property";
hello = "override";
}
}
@classDecorator
class Greeter {
property = "property";
hello: string;
constructor(m: string) {
this.hello = m;
}
}
但我现在想通过如下方式使用装饰器来传递参数
@classDecorator({
// some object properties fitting DecoratorData type
})
我只是尝试添加第二个数据参数
function classDecorator<T extends {new(...args:any[]): {}}>(constructor: T, data: DecoratorData)
但这只是 tslint 需要 2 个参数,得到 1 个。插入 null 占位符也不起作用。我还尝试使用constructor 参数作为第二个可选参数。这会导致签名不匹配错误。
【问题讨论】:
标签: typescript constructor decorator