JS手写练习随笔-20221210.1 ---- compose

compose - 串行组合多个方法的函数

 

# TS版

复制代码
type IParamFn<T> = (v: T) => T;

function compose<T>(...fns: IParamFn<T>[]) {
  if (fns.length === 0) {
    return (v: T) => v;
  } 
  if (fns.length === 1) {
    return fns[0];
  } 
  const reducer = (prev: IParamFn<T>, curr: IParamFn<T>) => {
    return (v: T) => prev(curr(v));
  };
  return fns.reduce(reducer); 
}

function fn1(x: number) {
  return x + 1;
}
function fn2(x: number) {
  return x + 2;
}
function fn3(x: number) {
  return x + 3;
}
function fn4(x: number) {
  return x + 4;
}

const vx = compose(fn1, fn2, fn3, fn4);
复制代码

 

posted @   樊顺  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示