TypeScript 7.0: o compilador nativo em Go chega com builds até 12x mais rápidos
Em 8 de julho de 2026, o time do TypeScript publicou o anúncio do TypeScript 7.0, a primeira versão estável do port nativo do compilador, escrito em Go. Depois de muito tempo em preview, a promessa de um tsc muito mais rápido virou o pacote padrão no npm. E, como toda reescrita grande, ela vem com ganhos enormes e algumas arestas.
Os números
Segundo a Microsoft, builds completos ficam tipicamente de 8 a 12 vezes mais rápidos. A tabela do anúncio, com o padrão de 4 checkers, mostra:
| Projeto | TS 6 | TS 7 | Ganho |
|---|---|---|---|
| vscode | 125,7 s | 10,6 s | 11,9x |
| sentry | 139,8 s | 15,7 s | 8,9x |
| bluesky | 24,3 s | 2,8 s | 8,7x |
| playwright | 12,8 s | 1,47 s | 8,7x |
| tldraw | 11,2 s | 1,46 s | 7,7x |
Com --checkers 8, o build do vscode caiu para 7,51 s. O uso de memória também diminuiu, entre 6% e 26% conforme o projeto. No editor, o tempo até o primeiro erro em um arquivo do código do VS Code foi de cerca de 17,5 segundos para menos de 1,3 segundo. Esse é o número que, para mim, mais muda o dia a dia: abrir um projeto grande e ver erros quase imediatamente.
Instalação e paralelismo
A instalação continua a mesma:
npm install -D typescript
npx tsc
O 7.0 traz flags novas para controlar o paralelismo. --checkers define quantos workers de type-check rodam, com padrão 4. --builders define quantas project references são construídas em paralelo com --build, e o efeito se multiplica com --checkers (4 × 4 pode dar até 16 type-checkers ao mesmo tempo). --singleThreaded desliga o paralelismo, inclusive no parsing e no emit. --checkers e --builders ainda são experimentais. O modo watch também foi refeito, sobre um port em Go do file watcher do Parcel.
Novos padrões e o que quebra
Esta é a parte que exige atenção na migração. Os padrões mudaram: strict agora é true, module é esnext, target é a versão estável mais recente do ECMAScript antes de esnext, noUncheckedSideEffectImports é true, rootDir passa a ser ./ e types passa a ser uma lista vazia. Isso significa, por exemplo, que tipos globais como os do Node ou do Jest precisam ser listados explicitamente:
{
"compilerOptions": {
"rootDir": "./src",
"types": ["node", "jest"]
}
}
Várias opções antigas agora são erro: target es5, downlevelIteration, moduleResolution node/node10 ou classic, module amd, umd, systemjs ou none, baseUrl, esModuleInterop ou allowSyntheticDefaultImports como false, alwaysStrict como false e a palavra-chave asserts em imports (use with). Quem ainda arrasta configuração de 2018 vai ter trabalho.
Sem API programática, por enquanto
A ressalva mais importante: o TypeScript 7.0 sai sem API programática. O time diz que espera lançar uma API nova, e diferente, no 7.1. Enquanto isso, o pacote @typescript/typescript6 fornece um executável tsc6 e reexporta a API do 6.0, para que ferramentas como o typescript-eslint continuem funcionando lado a lado com o 7.0.
A consequência direta é que Vue, MDX, Astro, Svelte e outros precisam ficar no TypeScript 6.0 por enquanto, porque ferramentas que embutem o TypeScript, como o Volar, dependem de uma API programática estável. O Angular pode usar o tsc do 7.0 para checagens de projeto inteiro na CLI e o 6.0 para o editor. O time diz que planeja suportar esses fluxos.
Isso me afeta diretamente: este blog é feito em Astro e com MDX, e por isso continua no TypeScript 6 até o ecossistema acompanhar.
Minha leitura
O TypeScript 7.0 entrega o que prometeu em velocidade, e os números são de projetos reais, não de benchmark sintético. Para backends, bibliotecas e monorepos em TypeScript puro, eu migraria logo, começando pelos novos padrões do tsconfig, que são a maior fonte de atrito.
Para quem depende de frameworks com templates próprios, a resposta honesta é esperar. A falta de API no 7.0 é uma decisão consciente para não congelar a interface errada, e faz sentido, mas significa que boa parte do ecossistema front-end vai viver em duas versões por um tempo. A versão a acompanhar agora é a 7.1.