2016-07-12 4 views
5

私は、渡された関数がどのように呼び出されたかを(主に単体テストで)調べることを可能にするスパイ関数を生成するJavaScriptライブラリを維持するのに役立ちます。TypeScriptで関数を拡張できますか?

ライブラリは、呼び出しを検査できる追加のプロパティを持つ関数を作成します。

関数を必要とし、余分なプロパティを持つメソッドに関数を渡すことを可能にするTypeScript定義を作成することは可能ですか?

これは無効ですが、何かのように:それはの組み合わせだから、

function subjectUnderTest(callback:() => void) { 
    ... 
} 

答えて

18

はい、the TypeScript handbook calls this a "hybrid type":私はこのシグネチャを持つ関数にスパイを渡すことができるようになる

class Spy extends function { 
    wasCalled:() => boolean; 
    ... 
} 

関数型と通常のインタフェースです。

interface Spy { 
    (foo: string, bar: number) : boolean; // Just an example 
    wasCalled() : boolean; 
} 

var spy : Spy = createASpySomehow(); 
var result = spy("foo", 123); 
if (spy.wasCalled()) { 
    // ... 
} 
+0

なぜこれがダウン投票されたのか分かりませんが、これは私が探していたものです。 –

関連する問題