使用默认参数的打字稿

时间:2019-07-09 05:56:57

标签: typescript currying

为什么我们在Typescript的curried函数中没有默认参数。

考虑以下示例:

function add(a: number): (b: number, c:number = 0) => number {
                                     ^^^^^^^^^^^^
    return function(b: number, c: number = 0): number {
        return a + b + c;
    }
} 

add(10)(5); //I want to call like this

带下划线的是错误部分。

  

仅在函数或构造函数中允许使用参数初始化程序   实施。

这就是林特所说的。如果是这样,有什么办法可以在咖喱函数中使用默认参数?

1 个答案:

答案 0 :(得分:2)

要记住的重要一点是,当您声明函数add时,(b: number, c:number = 0) => number是返回类型-您正在告诉编译器什么样的函数可以作为返回值。默认值不是该类型的一部分,而是实现的一部分。

但是,参数是可选的是该类型的一部分,所以这是有效的:

function add(a: number): (b: number, c?: number) => number {
    return function(b: number, c: number = 0): number {
        return a + b + c;
    };
}