Pipe is a lightweight JavaScript library for function composition and execution.
npm install @jswork/pipe
- pipe === pipe.sync
- pipe.sync (default)
- pipe.async
import pipe from '@jswork/pipe';
// fns
function addOne(n: number): number {
return n + 1;
}
function double(n: number): number {
return n * 2;
}
function divide(n: number): number {
if (n === 0) {
throw new Error('Divide by zero error.');
}
return 10 / n;
}
// use pipe
const calculate = pipe(
addOne,
double,
divide,
addOne
);
const result1 = calculate(3);
const result2 = calculate(-1);
// has result, without log
console.log('Result1:', result1); // 10 / (3 + 1)*2 + 1 = 2.25
// has result, but with warning log
console.log('Result2:', result2); // 10 / (-1+1)*2 + 1 => Throw error: Divide by zero error.
- compose:常见于函数式编程库如 Redux、Ramda,因为其与数学定义一致。
- pipe:常见于像 Elm、F# 或者 RxJS 中,因为它更符合“先做什么,再做什么”的自然阅读顺序。
Code released under the MIT license.