18

Ben typescript gerçekten heyecan alıyorum. Nasıl bir fonksiyon parametresinin türü ayarlarım?typescript - Yüksek mertebeden fonksiyon tipleri

function twoMoreThanYou(calculateANumber: Function):number { 
    return calculateANumber(4) + 2; 
} 

function double(n:number):number { 
    return n*2; 
} 

console.log("TWO MORE", twoMoreThanYou(double)) 

nasıl yazabilirsiniz calculateANumber daha iyi? Bunun bir sayı alır ve sayı döndüren bir fonksiyon olması gerektiğini belirtmek isteriz. Benim yüksek mertebeden fonksiyonu daha okunabilir imzaların yapabilirsiniz

Ben o türü için bir "arayüz" ya da bazı steno yapabilir miyim?

cevap

25

Bunlar hem iş

interface NumberFunction extends Function { 
    (n:number):number; 
} 

function twoMoreThanYou(calculateANumber: (n:number)=>number):number { 
    ... 
} 

function twoMoreThanYou(calculateANumber: NumberFunction):number { 
    ... 
} 
+7

Sen 'NumberFunction' arayüzü ile' twoMoreThanYou' işlev için dönüş türü belirtmek gerekmez. Tür çıkarsama! – asawyer

+4

OMG Zaten typescript seviyorum. –