2026-01-07//LOG
TypeScript Strict Mode Mudou Meu Jeito de Pensar
Liguei strict mode num codebase NestJS legado semana passada. 847 erros. OITOCENTOS E QUARENTA E SETE. Fiquei olhando pro terminal por um minuto inteiro antes de fechar o notebook e ir fazer cafe. Precisava processar o luto.
Mas o negocio eh o seguinte. CADA UM daqueles erros era problema real. Nao era teoria de "ah talvez isso possa ser null." Eram bugs de verdade, prontos pra estourar em producao, escondidos atras de tipo frouxo.
Os piores eram os classicos de sempre. Propriedade opcional acessada sem check. Funcao retornando undefined quando quem chama assume que vem valor. Objeto tipado como any passando por tres camadas de abstracao ate ninguem mais saber que formato o bicho tem. Classico total.
Ligar strictNullChecks sozinho levantou uns 200 problemas. Cada um era crash potencial em runtime esperando o input errado na hora errada. Aquele tipo de bug que aparece 2h da manha num sabado quando um usuario maluco manda formulario com string vazia onde tu esperava numero.
strictPropertyInitialization pegou outro tanto. Classes com propriedade que era "com certeza atribuida no construtor" -- so que NAO ERA. Era atribuida num metodo init() que eh chamado depois da construcao, talvez, se os astros se alinharem e Mercurio nao tiver retrogrado.
O que mudou no meu jeito de pensar: parei de tratar tipo como documentacao e comecei a tratar como CONTRATO. Quando escrevo assinatura de funcao agora, penso no que acontece quando o input eh null. Quando defino interface, penso em quais campos sao REALMENTE opcionais vs quais eu tava com preguica de tornar obrigatorio.
A migracao levou tres dias. Tres dias dolorosos, tediosos, destruidores de alma adicionando null check e corrigindo type assertion. Mas desde entao? Zero bug de tipo em producao. ZERO. O compilador pega tudo em build time.
Meu conselho: liga strict mode no dia um de QUALQUER projeto. Se tu ta herdando codebase sem ele, separa uma semana e faz. Sim, vai doer. Sim, tu vai questionar tuas escolhas de carreira. Mas a alternativa eh achar esses bugs em producao, e isso doi MUITO MAIS.
TypeScript strict nao eh preferencia de estilo. Eh portao de qualidade. Trata como tal.