Skip to content

pipe

函数管道,从左向右执行函数序列。

函数签名

typescript
function pipe<T>(...fns: Array<(arg: T) => T>): (arg: T) => T

参数

参数名类型必填说明
...fnsArray<(arg: T) => T>要组合的函数序列(从左向右执行)

返回值

类型说明
(arg: T) => T管道函数

工作原理

  1. 返回一个新函数,接收初始参数
  2. 从左向右依次执行函数序列:
    • 第一个函数接收初始参数
    • 每个函数的返回值作为下一个函数的参数
    • 最后一个函数的返回值作为最终结果
  3. 使用 reduce 实现:fns.reduce((acc, fn) => fn(acc), initialValue)

示例

typescript
const add1 = (x) => x + 1
const double = (x) => x * 2
const square = (x) => x * x

const piped = pipe(add1, double, square)
piped(3) // square(double(add1(3))) = square(double(4)) = square(8) = 64

执行顺序:左→右(add1 → double → square),更符合自然的阅读顺序。与 compose 相反。