ts-functional-pipe para TypeScript: guia completo com exemplos
1. O que é e para que serve
ts-functional-pipe é uma biblioteca leve para TypeScript que oferece um operador de pipe (pipe) poderoso e type-safe, além de um conjunto de utilitários para composição funcional. Diferente da proposta nativa do operador |> em JavaScript (que ainda não foi padronizada), esta biblioteca permite que você use hoje uma sintaxe elegante e legível para processamento sequencial de dados. A ideia principal é substituir chamadas de funções aninhadas (f(g(h(x)))) por uma cadeia linear (pipe(x, h, g, f)), melhorando significativamente a legibilidade e a manutenibilidade do código.
Para que serve? No desenvolvimento moderno com TypeScript, frequentemente precisamos realizar várias transformações sequenciais em dados: filtragem, mapeamento, ordenação, validação, transformação. Sem o pipe, esse código se transforma em uma "pirâmide" de funções aninhadas ou em uma cadeia de variáveis mutáveis. O ts-functional-pipe resolve esse problema fornecendo uma forma declarativa de descrever o fluxo de dados. A biblioteca é totalmente tipada, o que significa que o TypeScript verificará os tipos em cada etapa do pipe, prevenindo erros em tempo de compilação.
A biblioteca é especialmente útil em projetos que adotam uma abordagem funcional: processamento de arrays, trabalho com Observable (RxJS), transformação de respostas de API, construção de middlewares e muito mais. Ela não impõe paradigmas, apenas oferece uma ferramenta conveniente para composição de funções. O ts-functional-pipe não é apenas um pipe, mas um conjunto completo de funções auxiliares que tornam a programação funcional em TypeScript confortável e segura.
2. Instalação
A instalação da biblioteca é feita com o gerenciador de pacotes padrão npm (ou yarn/pnpm). A biblioteca é escrita em TypeScript e já vem com arquivos de declaração de tipos prontos, portanto não é necessário instalar @types separadamente.
# Instalação via npm
npm install ts-functional-pipe
# Instalação via yarn
yarn add ts-functional-pipe
# Instalação via pnpm
pnpm add ts-functional-pipe
Após a instalação, você pode importar as funções necessárias no seu projeto:
import { pipe, compose, map, filter, reduce } from 'ts-functional-pipe';
3. Início rápido — exemplo mínimo funcional
Vamos começar com o exemplo mais simples: transformar um número aplicando várias operações. Sem a biblioteca, isso seria Math.sqrt(Math.abs(-25)). Com o ts-functional-pipe, podemos escrever de forma linear:
import { pipe } from 'ts-functional-pipe';
// Definindo funções simples
const addOne = (x: number): number => x + 1;
const double = (x: number): number => x * 2;
const toString = (x: number): string => `Resultado: ${x}`;
// Usando pipe para aplicação sequencial
const result = pipe(
5, // Valor inicial
addOne, // 5 + 1 = 6
double, // 6 * 2 = 12
toString // "Resultado: 12"
);
console.log(result); // Saída: "Resultado: 12"
Como você pode ver, o código é lido de cima para baixo, o que é muito mais intuitivo do que chamadas aninhadas. O pipe automaticamente passa o resultado da função anterior como argumento para a próxima.
4. Métodos/funções principais
A biblioteca oferece um conjunto rico de funções. Vamos explorar 8 das principais.
4.1. pipe
Também na biblioteca
Trabalhando com tokens JWT em TypeScript: biblioteca jsonwebtoken e guia completo
Envio de SMS em C# (.NET): Integração com API de Serviços SMS via HttpClient
Monitoramento de aplicativos Swift: bibliotecas para iOS e macOS
Tokens JWT em Java: Guia Completo para Trabalhar com JSON Web Tokens
GraphQL em PHP: bibliotecas webonyx/graphql-php e Lighthouse para criação de APIs