TypeScript 7.0.2: como começar a validar a nova geração do compilador sem travar o time

TypeScript 7 não é uma release comum de compilador. A nova base nativa em Go promete acelerações grandes em build, watch mode e experiência de editor, usando paralelismo e menos memória em vários cenários. A 7.0.2, publicada hoje, chega no momento em que muitas equipes ainda estão absorvendo as mudanças de configuração introduzidas pela linha 6.

É tentador olhar para os números divulgados e trocar a versão no primeiro PR disponível. A recomendação mais útil é fazer uma transição em duas camadas: validar o tsc novo onde ele encaixa bem e manter TypeScript 6 onde uma ferramenta ainda precisa da API programática anterior.

O que muda de verdade

O TypeScript 7 executa parsing, checagem e emissão com paralelismo. Há flags como --checkers e --builders para controlar concorrência, além de --singleThreaded para depuração ou máquinas limitadas. Em monorepos grandes, isso pode encurtar um ciclo de feedback que virou gargalo. Em projetos pequenos, o ganho existe, mas talvez não justifique uma migração apressada.

Também há um limite importante: a versão 7.0 ainda não oferece uma API programática estável. Ferramentas que incorporam o compilador, incluindo parte do ecossistema de templates e plugins de linguagem, podem precisar continuar em TypeScript 6 por enquanto. A documentação cita Vue, MDX, Astro, Svelte e Angular como fluxos que podem não aproveitar a nova versão imediatamente.

Teste lado a lado

O projeto publicou @typescript/typescript6 para facilitar essa convivência. Ele fornece o executável tsc6 e reexporta a API 6, enquanto o pacote principal pode fornecer o tsc da versão 7. Assim, o CI pode medir o novo compilador sem obrigar toda a cadeia de tooling a mudar no mesmo commit.

{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  },
  "scripts": {
    "typecheck:next": "tsc --noEmit",
    "typecheck:current": "tsc6 --noEmit"
  }
}

O exemplo segue a estratégia documentada pelo time do TypeScript. Ajuste os aliases ao gerenciador de pacotes do projeto e confirme qual binário cada script resolve. A ideia é comparar erros, duração e consumo de memória com o mesmo commit, não declarar uma vitória porque uma máquina local foi mais rápida uma vez.

Confira também as mudanças herdadas da versão 6

TypeScript 7 assume defaults recentes e transforma algumas deprecações em erro. Entre elas estão opções antigas de resolução de módulos, baseUrl e targets antigos. Se o projeto ainda não passou por TypeScript 6, faça essa etapa antes. Migrar duas gerações e trocar o compilador nativo na mesma mudança é possível, mas dificulta muito descobrir a causa de um diagnóstico novo.

Para codebases grandes, a notícia é excelente: velocidade pode tornar checagem local viável de novo. Para qualquer codebase, a regra é menos empolgante e mais útil: valide em paralelo, fixe a configuração e deixe o ecossistema que depende da API acompanhar no ritmo dele.

Fontes