TypeScript
State Machines com Discriminated Unions
State machines tipadas eliminam estados impossíveis do seu código. O compilador garante que toda transição é válida e todo estado é tratado.
TypeScriptDiscriminated UnionsState MachinesDesign Patterns
Por que isso é importante
State Machines com Discriminated Unions. State machines tipadas eliminam estados impossíveis do seu código. O compilador garante que toda transição é válida e todo estado é tratado.
O Problema dos Estados Booleanos
Discriminated Unions: A Solução
Type Narrowing Automático
Exhaustive Check Pattern
State Machine Tipada
Caso Real: Checkout Flow
Discriminated Unions em React
XState + TypeScript
Checklist de State Machines Type-Safe
Use discriminated unions com campo discriminante único (status, type, kind)
Cada variante tem apenas os campos que fazem sentido naquele estado
Implemente exhaustive checks com assertNever ou análise de fluxo
Defina tipos separados pra State e Event
Use reducer pattern pra controlar transições válidas
Aproveite type narrowing em switch/if pra acessar campos específicos
Evite estados booleanos múltiplos que criam combinações impossíveis
Documente transições válidas em comentários ou diagramas
Use const assertions em eventos: as const
Considere XState pra máquinas complexas com hierarquia
Teste que todos os estados podem ser alcançados
Garanta que não existem estados deadlock (sem transições de saída)
Use discriminated unions em props React pra dependências obrigatórias
Mantenha estados finais explícitos (completed, cancelled, etc.)
Aproveite type inference do TypeScript ao máximo
relacionados