前端小技巧: TS实现柯里化函数

实现 curry 函数,把其他函数柯里化

  • curry 返回一个函数fn
  • 执行fn, 中间状态返回函数,如 add(1), 或者 add(1)(2)
  • 最后返回执行结果,如 add(1)(2)(3)
ts 复制代码
function curry(fn:Function) {
  const fnArgsLen = fn.length // 传入函数的参数长度
  let args:any[] = []
  // ts中,独立的函数,this需要生命类型
  function calc(this:any, ...newArgs:any[]) {
    // 积累参数
    args = [
      ...args,
      ...newArgs,
    ]
    if (args.length < fnArgsLen) {
      // 参数不够,返回函数
      return calc
    } else {
      // 参数够了,返回执行结果
      return fn.apply(this, args.slice(0, fnArgsLen))
    }
  }
  return calc
}

function add(a: number, b: number, c: number):number {
  return a + b + c
}

const curryAdd = curry(add)
const curryAdd = curry(add)

curryADD(10)(10)(10)
相关推荐
攀登的牵牛花几秒前
本周 GitHub 趋势观察:为什么前端热榜越来越像“AI 工具市场”?
前端·github
qq_333120974 分钟前
头歌答案--爬虫实战
java·前端·爬虫
Jinuss6 分钟前
源码分析之React中的组件缓存React.memo
前端·react.js
斯班奇的好朋友阿法法12 分钟前
ollama离线导入大模型
服务器·前端·javascript
misty youth17 分钟前
pnpm build,发生了什么
前端·electron·pnpm·build
1024小神18 分钟前
kotlin安卓项目配置webview开启定位功能
前端
kyriewen26 分钟前
MutationObserver:DOM界的“卧底”,暗中观察每个风吹草动
前端·javascript·面试
踩着两条虫31 分钟前
VTJ.PRO 在线应用开发平台的开发者工具与代码质量
前端·vue.js·ai编程
TON_G-T40 分钟前
100行实现Mini React
前端·javascript·react.js
恋猫de小郭40 分钟前
2026 AI 时代下,Flutter 和 Dart 的机遇和未来发展,AI 一体化
android·前端·flutter