Bugs reais revelados ao introduzir TypeScript estrito em um projeto JavaScript

Conclusão
O projeto kimura512.dev iniciou em JavaScript puro e migrou progressivamente para TypeScript estrito. A tipagem estática tardia não gera funcionalidades mágicas; em vez disso, escancara suposições silenciosas de tempo de execução que minavam a confiabilidade. Enquanto o build permanecia com erros, os deploys foram suspensos para focar unicamente na estabilização.
1. Identificação de chaves de tradução ausentes
Textos traduzidos ficavam centralizados, mas lacunas de idiomas passavam despercebidas até a renderização real. Ao impor a assinatura Record<Language, string>, qualquer tradução incompleta interrompe o build imediatamente.
2. Tratamento defensivo de links em Markdown
O analisador sintático trata URLs como opcionais. Assumir que o atributo href estava sempre preenchido causava falhas silenciosas. O uso de uniões estritas forçou a implementação de rotas de contingência.
3. Consistência de datas no padrão ISO
Registros antigos apresentavam formatos heterogêneos de data, gerando Invalid Date em navegadores específicos. A padronização da tipagem corrigiu as discrepâncias na raiz.
4. Eliminação de coerções frágeis com 'as'
Substituí asserções cegas por esquemas de validação nas bordas das rotas de API, rejeitando payloads anômalos antes que afetassem o restante da aplicação.
5. Refatoração de propriedades do React
A atualização de versões exigiu inicialização correta de useRef e tipagem adequada de nós filhos com ReactNode.
6. Compilação como linha de defesa
Como o comando vinext build executa análise profunda de tipos, sua aprovação local prévia é o maior fiador de estabilidade em projetos solo.
7. Variantes de componentes com tipos união
Restringir variações de cartões e botões a uniões de literais impede a aplicação acidental de classes inexistentes.
8. Isolamento de commits de refatoração
Ajustes de tipagem nunca são misturados a mudanças de interface, mantendo o histórico de código transparente.
Resumo
Proteger as fronteiras de entrada de dados assegura alta confiabilidade com o menor esforço de manutenção.
Notas operacionais
Q. O modo estrito foi ativado de uma só vez?
Não; as diretrizes do compilador foram ativadas de maneira progressiva.
Q. Ainda existem tipos 'any' no código?
Foram totalmente removidos, restando apenas unknown em encapsulamentos de SDKs externos.