- Introdução
- Por que TypeScript melhora a experiência em projetos reais
- Diferença entre “tipar por tipar” e “usar tipos para clareza e manutenção”
- Cenários comuns de má experiência com TS
- Tipagem com propósito
- Inferência de tipos vs. tipagem explícita: quando cada um é útil
- Uso inteligente de as const, literais e enums
- Evitando any e unknown mal utilizados
- Estrutura e organização
- Separação de tipos, interfaces e utilitários
- Nomeação clara para variáveis, funções e tipos
- Modularização para legibilidade e reutilização
- Código limpo com TypeScript
- Evitar overengineering com generics
- Preferindo composição a herança em interfaces
- Union types, discriminated unions e type guards
- Funções puras e seguras
- Experiência do time
- Configurações úteis do tsconfig para projetos saudáveis
- Como o TS ajuda em code review e manutenção
- Integrando boas práticas no CI/CD
- Padrões e anti-padrões
- Exemplos de más práticas comuns (tipagem redundante, abuso de any, interfaces inúteis)
- Refatorando para padrões mais simples e elegantes
- Balanceando flexibilidade e segurança
- Casos práticos
- Exercícios guiados: refatorando código JS para TS limpo
- Criando tipos utilitários para facilitar a vida do time
- Como pensar a experiência do desenvolvedor ao escrever tipos
- Encerramento
- Checklist de boas práticas
- Recomendações de estilo e convenções
- Próximos passos para se aprofundar