2016-10-13 4 views
2

パラメータを取ることができるクラスのデコレータ関数を作成したいと思います。TypeScriptのクラスデコレータにパラメータを追加する方法は?

@Plugin("My first Plugin") 
class myFirstPlugin { 
    ... 
} 

は、私はこれを試してみましたが、それは動作しません:

function Plugin(constructor: Function, name:string){ 
    console.log("Plugin found: " + name); 
} 

私が言っWebStormでエラーが発生します。

TS2346:指定されたパラメータが一致しませんコールターゲットの任意の署名

このデコレータ機能をどのように書く必要がありますか?あなたのデコレータは、パラメータを受信したい場合は、あなたのデコレータ機能は、実際のデコレータ機能を返す必要がある

答えて

5

function PluginDecorator(name: string) { 
    return (ctor: Function) => { 
     console.log("Plugin found: " + name); 
    } 
} 

@PluginDecorator("My first Plugin") 
class myFirstPlugin {} 

code in playground

Pluginがすでに存在しているので、私はPluginDecoratorに名前を変更し、コンパイラはその名前について不平を言う。

+0

コンストラクタがある場合は、コンストラクタは呼び出されません。 – Mohsen

+0

@Mohsenより具体的にする必要があります –

+0

@Mohsen返信を編集するには、回答を編集しないでください。そして、はい、コンストラクタは呼び出されていますが、 'new myFirstPlugin()'を実行しているときにのみ –

関連する問題