打字稿 - 高阶函数类型

Sea*_*ess 22 javascript functional-programming higher-order-functions typescript

我对TypeScript感到非常兴奋.如何设置函数参数的类型?

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

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

console.log("TWO MORE", twoMoreThanYou(double))
Run Code Online (Sandbox Code Playgroud)

我怎么打字calculateANumber更好?我想指定它必须是一个带数字的函数并返回一个数字.

然后,我可以为该类型创建一个"界面"或一些简写,这样我可以使我的高阶函数签名更具可读性吗?

Sea*_*ess 34

这两个都有效

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

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

function twoMoreThanYou(calculateANumber: NumberFunction):number {
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 您不必使用`NumberFunction`接口为`twoMoreThanYou`函数指定返回类型.类型推断! (7认同)