A pipe is a function or operator that allows us to pass the output of a function as the input of another. JavaScript and TypeScript don't support pipes natively (as an operator), but we can implement our pipes using the following function:
const pipe = <T>(...fns: Array<(arg: T) => T>) => (value: T) => fns.reduce((acc, fn) => fn(acc), value);
We are going to use the curry3, trim, capitalize, and replace functions that we declared previously in this chapter:
const trim = (s: string) => s.trim();const capitalize = (s: string) => s.toUpperCase();const replace = curry3( (s: string, f: string, r: string) => s.split(f).join(r));
We can then use the pipe function to declare a new function:
const trimCapitalizeAndReplace = pipe( trim, capitalize, ...