2017-04-23 1 views
0

は、私はトリガーを持って言う:コード内TSでjqueryのイベント - それを厳格にする方法?

$(window).trigger('kittySaid', ['meow', true, 3]); 

とどこかに私は

$(window).on('kittySaid', (e, sound:string, isPurring:boolean, age:number)=>{ 
    do something 
}); 

を持っているので、問題がある:「トリガー」の種類は、「上」の種類を確認したので、私はありません「ヤング」の代わりに123を渡すことができ、警告を受け取ることはありません。私は関数を呼び出すかのように、トリガチェックの型を作ることは可能ですか?

+0

1つの場所に3つの値の配列を使用し、別の場所に4つの独立した引数(配列の値に対応する最後の3つ)を使用する必要がありますか?それは少し残念です。 –

答えて

2

ここでは、タイプを相互に関連付けることができ、タイプを同期させ、関係を宣言することができます。

type KittyEvent = 'kittySaid'; 

type KittySaidEventArguments = [string, boolean, number]; 

interface JQuery { 
    trigger(name: KittyEvent, args: KittySaidEventArguments): void; 

    on(
    name: KittyEvent, 
    handler: (
     e: Event, 
     sound: KittySaidEventArguments[0], 
     isPurring: KittySaidEventArguments[1], 
     age: KittySaidEventArguments[2] 
    ) => void 
): void; 
} 

注:

  1. これは活字体2.1が必要ですが、あなたは2.2を使用する必要があります以降とインデックス付きアクセスタイプの多くの側面が洗練されています。

  2. モジュールの内部にある場合は、上記のコードのinterface部分をdeclare global {...}ブロックで囲みます。

関連する問題