Effect-ts para TypeScript: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Effect-ts e para que serve?

\n\n

Effect-ts é uma biblioteca poderosa para TypeScript que traz para a linguagem conceitos de programação funcional, permitindo escrever código limpo, componível e type-safe. Ela resolve um dos principais problemas no desenvolvimento com TypeScript (e JavaScript em geral) — o gerenciamento de efeitos colaterais (side effects).

\n\n

Na programação imperativa tradicional, os efeitos colaterais (trabalho com rede, arquivos, bancos de dados, geração de números aleatórios, trabalho com tempo) estão espalhados por todo o código, tornando-o difícil de testar, depurar e analisar. Effect-ts oferece uma abordagem elegante: todos os efeitos colaterais são descritos como dados (valores) que podem ser combinados, transformados e executados em um ambiente controlado.

\n\n

Principais vantagens do Effect-ts:

\n
    \n
  • Type-safety: O compilador TypeScript verifica tipos de erros e resultados bem-sucedidos no nível dos tipos.
  • \n
  • Componibilidade: Efeitos são facilmente combinados usando funções como map, flatMap, zip e outras.
  • \n
  • Gerenciamento de erros: Erros são tratados como parte do tipo do efeito, não através de exceções.
  • \n
  • Testabilidade: Dependências (por exemplo, clientes HTTP, bancos de dados) podem ser facilmente substituídas.
  • \n
  • Concorrência: Suporte embutido para assincronicidade, paralelismo e cancelamento de operações.
  • \n
  • Previsibilidade: O código se torna mais declarativo e mais fácil de entender.
  • \n
\n\n

Effect-ts é especialmente útil em projetos grandes, onde confiabilidade, testabilidade e escalabilidade são importantes. Ele é usado em desenvolvimento backend (Node.js), frontend (React) e até mesmo em aplicativos móveis.

\n\n

Instalação

\n\n

Para instalar o Effect-ts no seu projeto, use npm ou yarn:

\n\n
npm install effect
\n\n

ou

\n\n
yarn add effect
\n\n

Certifique-se também de ter o TypeScript versão 4.7 ou superior instalado:

\n\n
npm install typescript --save-dev
\n\n

Para trabalhar com Effect-ts, você precisará configurar o tsconfig.json, ativando o modo estrito (strict: true) e, de preferência, target: "ES2020" ou superior.

\n\n

Início rápido com exemplo de código

\n\n

Vamos escrever um programa simples que lê o nome do usuário da linha de comando e exibe uma saudação. Isso mostrará o conceito básico do Effect-ts: descrição do efeito e sua execução.

\n\n
import { Effect, Console } from "effect"\n\n// Descrevemos o efeito: solicitar o nome\nconst askName: Effect.Effect<string> = Effect.sync(() => {\n  // Em uma aplicação real, aqui haveria uma entrada do teclado\n  return "Alexei"\n})\n\n// Descrevemos o efeito: exibir saudação\nconst greet = (name: string): Effect.Effect<void> =>\n  Console.log(`Olá, ${name}!`)\n\n// Combinamos os efeitos\nconst program: Effect.Effect<void> = askName.pipe(\n  Effect.flatMap(greet)\n)\n\n// Executamos o programa\nEffect.runSync(program)\n// Saída: Olá, Alexei!
\n\n

Neste exemplo:

\n
    \n
  • Effect.sync — cria um efeito a partir de uma função síncrona.
  • \n
  • Console.log — é um efeito para exibir no console.
  • \n
  • pipe — permite aplicar funções sequencialmente ao valor.
  • \n
  • flatMap — é usado para executar efeitos sequencialmente.
  • \n
  • Effect.runSync — executa o efeito de forma síncrona (apenas para efeitos síncronos).
  • \n
\n\n

Principais métodos e funções do Effect-ts

\n\n

1. Effect.sync

\n

O que faz: Cria um efeito que encapsula uma função síncrona. A função é executada de forma lazy (apenas quando o efeito é iniciado).

\n

Parâmetros:

\n
    \n
  • f: () => A — função síncrona que retorna um valor do tipo A.
  • \n
\n

Exemplo:

\n
import { Effect } from "effect"\n\nc                    

Recommendations