パラメータをとることができるクラスのデコレータ関数を作成したいと思います。
例
@Plugin("My first Plugin")
class myFirstPlugin {
...
}
私はこれを試しましたが、機能しません:
function Plugin(constructor: Function, name:string){
console.log("Plugin found: " + name);
}
WebStormで次のようなエラーが発生します。
TS2346:指定されたパラメータがコールターゲットのどの署名とも一致しません
このデコレータ関数を作成するにはどうすればよいですか?
デコレータにパラメータを受信させたい場合は、デコレータ関数が実際のデコレータ関数を返す必要があります。
function PluginDecorator(name: string) {
return (ctor: Function) => {
console.log("Plugin found: " + name);
}
}
@PluginDecorator("My first Plugin")
class myFirstPlugin {}
( 遊び場のコード )
PluginDecorator
がすでに存在し、コンパイラがその名前について文句を言うので、名前をPlugin
に変更しました。