侧边栏壁纸
  • 累计撰写 53 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

柯里化&&TS下柯里化的类型标注

Kirito
2024-04-30 / 0 评论 / 0 点赞 / 50 阅读 / 1662 字 / 正在检测是否收录...

柯里化(Currying)是一种将多参数函数转换为一系列使用一个参数的函数的技术。它通常用于将复杂的函数简化,以便于理解和使用。例如,可以将一个处理多个参数的函数转换为处理一个参数的函数序列,这样就可以更好地控制任务的执行流程。

// 三数之和
function threeSum(a: number, b: number, c: number): number {
	return a + b + c
}

// 柯里化转换返回类型
type Curried<A extends any[], R> = A extends []
? () => R
: A extends [infer ARG]
? (p: ARG) => R
: A extends [infer ARG, ...infer REST]
? (p: ARG) => Curried<REST, R>
: never

// 柯里化转换函数
declare function curry<A extends any[], R>(func: (...args: A) => R): Curried<A, R>

const curriedThreeSum = curry(threeSum)

// 使用柯里化后的函数
const result = curriedThreeSum(1)(2)(3) // 结果为 6

0

评论区