Guía completa de ts-functional-pipe para TypeScript con ejemplos
1. ¿Qué es y para qué sirve?
ts-functional-pipe es una librería ligera para TypeScript que ofrece un operador pipe potente y con seguridad de tipos, junto con un conjunto de utilidades para la composición funcional. A diferencia de la propuesta nativa del operador |> en JavaScript (aún no estandarizada), esta librería te permite usar ya hoy una sintaxis elegante y legible para procesar datos de forma secuencial. La idea principal es reemplazar las llamadas anidadas a funciones (f(g(h(x)))) por una cadena lineal (pipe(x, h, g, f)), mejorando significativamente la legibilidad y el mantenimiento del código.
¿Para qué sirve? En el desarrollo moderno con TypeScript, a menudo necesitamos aplicar varias transformaciones consecutivas a los datos: filtrado, mapeo, ordenamiento, validación, transformación. Sin pipe, ese código se convierte en una "pirámide" de funciones anidadas o en una cadena de variables mutables. ts-functional-pipe resuelve esto ofreciendo una forma declarativa de describir el flujo de datos. La librería está completamente tipada, lo que significa que TypeScript verificará los tipos en cada etapa del pipe, previniendo errores en tiempo de compilación.
Esta librería es especialmente útil en proyectos que adoptan un enfoque funcional: procesamiento de arrays, trabajo con Observables (RxJS), transformación de respuestas de API, construcción de middleware y mucho más. No impone paradigmas, solo proporciona una herramienta cómoda para la composición de funciones. ts-functional-pipe no es solo un pipe, es un conjunto completo de funciones auxiliares que hacen que la programación funcional en TypeScript sea cómoda y segura.
2. Instalación
La instalación de la librería se realiza con el gestor de paquetes estándar npm (o yarn/pnpm). La librería está escrita en TypeScript y viene con archivos de declaración de tipos listos, por lo que no es necesario instalar @types adicionales.
# Instalación con npm
npm install ts-functional-pipe
# Instalación con yarn
yarn add ts-functional-pipe
# Instalación con pnpm
pnpm add ts-functional-pipe
Después de la instalación, puedes importar las funciones necesarias en tu proyecto:
import { pipe, compose, map, filter, reduce } from 'ts-functional-pipe';
3. Inicio rápido — ejemplo mínimo funcional
Empecemos con el ejemplo más simple: transformar un número aplicándole varias operaciones. Sin la librería, se vería como Math.sqrt(Math.abs(-25)). Con ts-functional-pipe podemos escribirlo de forma lineal:
import { pipe } from 'ts-functional-pipe';
// Definimos funciones simples
const sumarUno = (x: number): number => x + 1;
const duplicar = (x: number): number => x * 2;
const aTexto = (x: number): string => `Resultado: ${x}`;
// Usamos pipe para aplicar las funciones en secuencia
const resultado = pipe(
5, // Valor inicial
sumarUno, // 5 + 1 = 6
duplicar, // 6 * 2 = 12
aTexto // "Resultado: 12"
);
console.log(resultado); // Salida: "Resultado: 12"
Como ves, el código se lee de arriba a abajo, lo que es mucho más intuitivo que las llamadas anidadas. pipe pasa automáticamente el resultado de cada función como argumento a la siguiente.
4. Métodos y funciones principales
La librería ofrece un rico conjunto de funciones. A continuación, analizamos 8 de las más importantes.
4.1. pipe
También en la biblioteca