O Tipo Effect
Entenda Effect .
O Tipo Effect é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
O tipo Effect
O tipo central é Effect<Success, Error, Requirements>. Seus três parâmetros de tipo descrevem tudo o que uma computação pode fazer: o que produz, como pode falhar e do que precisa.
import { Effect } from "effect";
// Effect<A, E, R>
// A = success value type
// E = error type
// R = required services (dependencies)O canal de sucesso (A)
O primeiro parâmetro é o valor produzido em caso de sucesso. Effect.succeed cria um efeito que sempre produz um valor, sem erros nem requisitos.
import { Effect } from "effect";
const ok = Effect.succeed(42);
// Effect<number, never, never>O canal de erro (E)
O segundo parâmetro é o erro tipado. never significa que o efeito não pode falhar. Um tipo de erro real significa que o código chamador precisa levá-lo em conta.
import { Effect } from "effect";
class NotFound { readonly _tag = "NotFound"; }
const failing = Effect.fail(new NotFound());
// Effect<never, NotFound, never>O canal de requisitos (R)
O terceiro parâmetro lista os serviços dos quais o efeito depende. never significa que ele é autocontido; caso contrário, não pode ser executado até que esses serviços sejam fornecidos.
// Conceptually:
// Effect<User, NotFound, Database>
// produces a User, may fail with NotFound, needs a DatabaseLendo uma assinatura
Você pode ler um tipo de efeito como uma frase: "produz A ou falha com E, dado R". Esse único tipo substitui uma Promise, lançamentos implícitos e variáveis globais ocultas.
never como identidade
never é o valor neutro dos canais E e R: nenhum erro possível e nenhuma dependência necessária. À medida que você compõe, os tipos de erro e de requisitos se acumulam como uniões.
Criando efeitos a partir de valores
Construtores comuns: succeed (valor puro), fail (erro tipado) e sync (encapsula um efeito colateral síncrono).
import { Effect } from "effect";
const now = Effect.sync(() => Date.now());
// Effect<number, never, never>Encapsulando trabalho assíncrono
Effect.promise e Effect.tryPromise elevam promessas a efeitos; tryPromise permite mapear uma rejeição para um erro tipado no canal E.
import { Effect } from "effect";
const fetchUser = Effect.tryPromise({
try: () => fetch("/user").then((r) => r.json()),
catch: (e) => new Error("fetch failed: " + String(e)),
});
// Effect<any, Error, never>Apelidos de tipo para os canais
Para serviços, Effect fornece Effect.Effect<A, E, R> como nome completo. Os canais são independentes: é possível ter erros sem requisitos ou requisitos sem erros.
Por que três canais
Três canais capturam os três aspectos que tornam o código difícil de compreender: o resultado, os modos de falha e o contexto no qual ele é executado. Expor os três em um único tipo é o que dá ao Effect suas garantias de segurança.
Por que isso é importante
Compreender Effect<A, E, R> é a chave para todo o restante: a composição combina esses canais, o tratamento de erros restringe E e o fornecimento de dependências elimina R. Leia o tipo e você saberá exatamente o que uma computação faz.
Verificação rápida
Confirme sua compreensão do tipo Effect.
Recapitulação
Effect<A, E, R> codifica o valor de sucesso, o erro tipado e as dependências necessárias em um único tipo. never é o valor neutro de E e R. Construtores como succeed, fail, sync e tryPromise criam efeitos com os canais apropriados.
Perguntas Frequentes
A aula “O Tipo Effect” é grátis?
Sim — o texto completo de “O Tipo Effect” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “O Tipo Effect”?
Entenda Effect . Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “O Tipo Effect”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que os Sistemas de Efeitos São Importantes
- O Tipo Effect
- Compondo Efeitos
- Canais de Erro e Dependências