2016-07-12 29 views
5

Geçiş işlevinin nasıl çalıştığını denetlemenize olanak tanıyan casus işlevler üreten bir JavaScript kitaplığını korumasına yardımcı oluyorum (özellikle birim sınamada kullanmak için).Bir işlevi TypeScript'te genişletir misiniz?

Kitaplık, aramaları denetlemenize olanak tanıyan ek özelliklere sahip bir işlev oluşturur.

İşlevlerin işlev gerektiren VE ek özelliklere sahip yöntemlere aktarılmasına izin veren bir TypeScript tanımı oluşturmak mümkün mü?

Bu geçersiz, ama bir şey gibi: o bir kombinasyonu olduğu için,

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

cevap

18

Evet, the TypeScript handbook calls this a "hybrid type": Beni bu imzayla bir fonksiyonu haline casus geçmesine izin verecek

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

Bir işlev türü ve düzenli bir arayüz.

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

Bunun neden reddedildiğinden emin değilim, tam da aradığım şey bu. –

İlgili konular