使用默认参数的打字稿
typescript currying with default parameters
为什么我们不能在 Typescript 的柯里化函数中使用默认参数。
考虑以下示例:
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
下划线部分为错误部分
A parameter initializer is only allowed in a function or constructor
implementation.
这就是 linter 所说的。如果是这种情况,是否有任何方法可以在 curried 函数上使用默认参数?
要记住的重要一点是,当你声明函数 add
时,(b: number, c:number = 0) => number
是 return 类型——你是在告诉编译器什么样的函数是可接受的return 值。尽管默认值不是类型的一部分,但它们是实现的一部分。
然而,让参数可选是类型的一部分,所以这是有效的:
function add(a: number): (b: number, c?: number) => number {
return function(b: number, c: number = 0): number {
return a + b + c;
};
}
为什么我们不能在 Typescript 的柯里化函数中使用默认参数。
考虑以下示例:
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
下划线部分为错误部分
A parameter initializer is only allowed in a function or constructor implementation.
这就是 linter 所说的。如果是这种情况,是否有任何方法可以在 curried 函数上使用默认参数?
要记住的重要一点是,当你声明函数 add
时,(b: number, c:number = 0) => number
是 return 类型——你是在告诉编译器什么样的函数是可接受的return 值。尽管默认值不是类型的一部分,但它们是实现的一部分。
然而,让参数可选是类型的一部分,所以这是有效的:
function add(a: number): (b: number, c?: number) => number {
return function(b: number, c: number = 0): number {
return a + b + c;
};
}