如何用TypeScript编写一行柯里化sum函数实现sum(x)(y)=x+y
TypeScript实现柯里化加法函数sum(x)(y)
你之前写的是接受两个参数的普通函数,只能通过sum(2, 4)的方式调用,不符合sum(2)(4)的柯里化调用需求。要实现这种链式调用,需要让函数返回另一个函数,利用闭包保存第一个参数的值。
以下是两种符合要求的实现方式:
箭头函数写法(一行实现)
const sum = (x: number) => (y: number): number => x + y;
普通函数写法
function sum(x: number): (y: number) => number { return (y: number) => x + y; }
调用验证:
const result = sum(2)(4); // 6 console.log('Result:', result);
原理说明:第一次调用sum(x)时,函数会返回一个新的函数,这个新函数通过闭包记住了外部的x值;当第二次调用传入y时,就会计算并返回x + y的结果。
内容的提问来源于stack exchange,提问作者Small Potato
相关产品推荐
相关产品推荐

