我想为可以获取参数的类创建一个装饰器函数。
实施例
@Plugin("My first Plugin")
class myFirstPlugin {
...
}
我试过这个,但它不起作用:
function Plugin(constructor: Function, name:string){
console.log("Plugin found: " + name);
}
我在WebStorm中收到错误说:
TS2346:提供的参数与呼叫目标的任何签名
都不匹配
我如何编写这个装饰器功能?
答案 0 :(得分:17)
如果您希望装饰器接收参数,那么装饰器函数需要返回实际的装饰器函数:
function PluginDecorator(name: string) {
return (ctor: Function) => {
console.log("Plugin found: " + name);
}
}
@PluginDecorator("My first Plugin")
class myFirstPlugin {}
我将名称更改为PluginDecorator
,因为Plugin
已经存在且编译器抱怨该名称。