O novo compilador baseado em Go do TypeScript 7, tsgo, já está quebrando ferramentas de desenvolvimento populares como ESLint, ts-jest e ts-morph. As quebras continuarão até que a API programática do compilador se estabilize no próximo lançamento 7.1, o que significa que as equipes que dependem dessas ferramentas devem pausar quaisquer planos de atualização.
O que mudou no TypeScript 7
O lançamento introduziu o tsgo, um port em Go do verificador de tipos que a equipe do TypeScript codificou como Project Corsa. Ao mover o núcleo do JavaScript para o Go, o compilador pode entregar builds até dez vezes mais rápidos, um destaque que atraiu os primeiros usuários em busca de reduzir minutos nos pipelines de CI.
Por que as ferramentas estão falhando
Ferramentas que trabalham com TypeScript não se comunicam diretamente com o verificador de tipos. Elas chamam um conjunto de APIs internas que expõem informações de tipo, diagnósticos e travessia de AST. Essas APIs foram reescritas para o tsgo e permanecem em constante mudança até a versão 7.1. O resultado é uma cascata de travamentos e falhas silenciosas:
- typescript-eslint – o npm se recusa a instalá-lo junto com o TypeScript 7; forçar a instalação faz com que o ESLint lance um
TypeError. - ts-jest – tenta chamar métodos internos que não existem mais na versão em Go, fazendo com que a transformação de arquivos de teste seja abortada.
- ts-morph – espera que a API estável percorra a estrutura do código; com a API atual, ele pode retornar resultados incorretos ou falhar sem aviso.
- Monorepos – o tsgo descarta certos parâmetros de tipo genéricos, levando a erros de tipo que só aparecem em projetos grandes e de múltiplos pacotes.
Qualquer fluxo de trabalho que misture linting, testes com Jest ou análise de código com o TypeScript 7 provavelmente enfrentará builds com erro.
Quem é afetado
- Equipes de front-end que executam o ESLint como parte de cada pull request.
- Serviços de back-end que dependem do ts-jest para testes unitários.
- Bibliotecas que usam o ts-morph para geração de código ou documentação.
- Organizações com configurações de monorepo onde a inferência de tipos já é complexa.
Se o seu pipeline de CI ficou vermelho após uma atualização do TypeScript, o culpado é provavelmente um dos itens acima.
Um caminho de migração seguro até a 7.1
A maneira mais simples de manter os ganhos de velocidade sem quebrar as ferramentas é desacoplar a etapa de verificação de tipos rápida do build real:
- Fixe a versão principal do TypeScript na 6.x – isso mantém a API estável que todas as ferramentas esperam.
- Adicione
@typescript/native-previewcomo uma dependência de desenvolvimento – o pacote inclui o binário do tsgo para uma verificação de tipos rápida no CI. - Execute o tsgo com
--noEmitpara verificações rápidas – ele valida os tipos, mas não produz arquivos de saída. - Use o compilador
tscclássico para builds reais – otscainda produz JavaScript e respeita a API 6.x.
npm install -D typescript@^6.9
npm install -D @typescript/native-preview
Atualize seus scripts no package.json:
{
"scripts": {
"typecheck:fast": "tsgo --noEmit",
"build": "tsc"
}
}
Com essa configuração dupla, você mantém o aumento de velocidade de dez vezes no CI, preservando a compatibilidade com ESLint, ts-jest e ts-morph.
Quando você pode atualizar diretamente para a 7.0
Se o seu código-fonte apenas invoca o tsc — sem linting, sem Jest, sem ts-morph — então a API instável não o afeta. Nesse cenário restrito, você pode mudar para o TypeScript 7 imediatamente e aproveitar o ganho de desempenho sem etapas adicionais.
O que observar
- Versão 7.1 – a equipe do TypeScript sinalizou que a API programática será congelada neste lançamento. Assim que ele chegar, a ponte entre o tsgo e as ferramentas existentes desaparecerá, permitindo uma atualização limpa.
- Atualizações de ferramentas – fique de olho nos novos lançamentos de
typescript-eslint,ts-jestets-morph. Eles publicarão versões compatíveis logo após o lançamento da 7.1. - Configuração de CI – lembre-se de substituir
tsgo --noEmitpor uma chamada regular dotscassim que a API se estabilizar; o pacote de preview não será mais necessário.
Resumo: Até o congelamento da API na 7.1, permaneça no TypeScript 6.x para o seu compilador principal, adicione o @typescript/native-preview para verificações rápidas e continue usando o tsc para builds. Isso evita problemas de linting e testes, enquanto você ainda colhe os benefícios de desempenho do novo motor em Go.
