【问题标题】:typescript currying with default parameters带有默认参数的打字稿柯里化
【发布时间】:2019-11-18 15:07:36
【问题描述】:

为什么我们在 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

下划线为错误部分。

参数初始化器只能在函数或构造函数中使用 实施。

这就是 linter 所说的。如果是这种情况,有没有办法在柯里化函数上设置默认参数?

【问题讨论】:

    标签: typescript currying


    【解决方案1】:

    要记住的重要一点是,当您声明函数 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;
        };
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 2021-11-15
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2021-01-31
      相关资源
      最近更新 更多