2017-02-17 9 views
0

を定義する汎用の基本クラス:活字体Iは、一般的な基本イベントクラスを作成しようとしていますベースのコールバックタイプ

class BaseEvent<T extends { (args?: any[]): void }> { 
    addEventListener(listener: T): {(): void } { 
     return() => { }; 
    } 
} 

私は、コールバックのパラメータを制限指定するために拡張することができます。

class ExtraSpecialEvent 
    extends BaseEvent<{ (foo: string): void }> { 

} 

しかし、私は構文を理解しているようです。 Here is a playground demonstrating my problem

どのようにすればよいでしょうか?

---- UPDATE ---- @ミュラを-kで、以下の答え

として、これは私の質問を尋ねる何ですが、私のジェネリックは、そのは私が意図していないものを、...配列を求めています。私の意図は0以上のany引数を許可することでした。あなたは配列型として宣言しているargs

class BaseEvent<T extends { (...args: any[]): void }> { 
    addEventListener(listener: T): {(): void } { 
     return() => { }; 
    } 
} 

答えて

1

:私の問題を解決するには、にジェネリックを変更することでした。あなたは配列として渡す必要があります。

class ExtraSpecialEvent 
    extends BaseEvent<{ (foo: string[]): void }> { 

} 
+0

いいえ、はい、あなたは正しいです。私はこれを答えとしてマークします...それは間違った質問をしていましたが...私は本当に0以上のargsを指定する能力が欲しかった...この答えは私を正しい経路に送りました。 – Lucas

+0

@ルーカスのために、 '...' restパラメータを使うことができます。例についてはこちらをご覧くださいhttp://stackoverflow.com/questions/12697275/open-ended-function-arguments-with-typescript –

関連する問題