Novidades no TypeScript 6.0
O TypeScript 6.0 não é um lançamento típico de recursos. Se você atualizar esperando nova sintaxe ou mudanças dramáticas no sistema de tipos, ficará surpreso. Este lançamento é principalmente sobre modernizar padrões, remover bagagem legada e preparar o ecossistema para o TypeScript 7.0 — a próxima versão nativa do compilador e ferramentas em Go. Entender o que mudou e por quê vai economizar horas de depuração após a atualização.
Principais Destaques
- O TypeScript 6.0 é um lançamento de transição — a última versão construída sobre o compilador baseado em JavaScript — projetada para limpar padrões e descontinuações antes da chegada da linha nativa TypeScript 7.0.
- Vários padrões do compilador foram alterados, incluindo
strict: true,module: "esnext", umtargetflutuante que atualmente resolve paraes2025,types: [], enoUncheckedSideEffectImports: true. Isso pode causar erros de compilação se seu tsconfig dependia de comportamento implícito. - Novos recursos de plataforma incluem o target
es2025, tipos para a API Temporal,RegExp.escape,Map.getOrInsert, e entradas consolidadas da biblioteca DOM. - Múltiplas opções legadas como
--moduleResolution node(o antigo comportamentonode10),--target es5, e formatos de módulo mais antigos foram descontinuados para a transição do TypeScript 7.0. Resolva-os agora para evitar uma migração dolorosa mais tarde.
TypeScript 6.0 É um Lançamento de Transição, Não de Recursos
O TypeScript 6.0 está intencionalmente posicionado como a última versão construída sobre a base de código JavaScript. O TypeScript 7.0 deve ser o sucessor nativo baseado em Go, com builds muito mais rápidas e melhor desempenho do editor. O TypeScript 6.0 limpa a fundação antes que essa transição aconteça.
A implicação prática: a maioria das mudanças do TypeScript 6.0 são sobre padrões de configuração e descontinuações, não novos recursos de linguagem. Se seu projeto vem acumulando opções legadas de tsconfig, agora é a hora de resolvê-las.
Novidades no TypeScript 6.0: Recursos de Alinhamento de Plataforma
Apesar do foco na transição, o TypeScript 6.0 adiciona suporte significativo para APIs modernas de JavaScript.
Target ES2025 e Novos Tipos Integrados
O TypeScript 6.0 adiciona es2025 como um valor válido para --target e --lib. Isso inclui tipos integrados para APIs como RegExp.escape, e também move algumas declarações de esnext para es2025.
Também adiciona tipos integrados para APIs mais recentes que ainda são expostas através de esnext:
RegExp.escape— escapa com segurança caracteres especiais de regex em uma string- API
Temporal— uma substituição moderna paraDate, tipada sobesnextoutemporal.esnext Map.getOrInserteMap.getOrInsertComputed— padrões de upsert mais limpos paraMapeWeakMap, disponíveis através deesnext
// Antes: padrão verboso de upsert em Map
if (!map.has("key")) map.set("key", defaultValue)
const value = map.get("key")
// Depois: limpo e conciso
const value = map.getOrInsert("key", defaultValue)
Consolidação de Tipos DOM
dom.iterable e dom.asynciterable agora estão mesclados na biblioteca base dom. Você não precisa mais listá-los separadamente em seu tsconfig.json. Se você estava usando "lib": ["dom", "dom.iterable"], pode simplificar para apenas "lib": ["dom"].
Importações de Subpath Começando com #/
O TypeScript agora suporta importações de subpath do Node.js usando o prefixo #/. Isso mapeia perfeitamente para o campo imports no package.json, e torna o recurso muito mais próximo dos padrões de alias que os usuários de bundlers já conhecem.
Discover how at OpenReplay.com.
Mudanças Incompatíveis do TypeScript 6.0: O Que Realmente Vai Quebrar Seu Projeto
É aqui que vive a maior parte do esforço de migração do TypeScript 6.0. Vários padrões do compilador foram alterados.
| Configuração | Padrão no TypeScript 6.0 |
|---|---|
strict | true |
module | esnext |
target | versão ES suportada atual (es2025 hoje) |
types | [] (vazio) |
rootDir | diretório do tsconfig |
noUncheckedSideEffectImports | true |
A mudança em types: [] é uma das mais impactantes. Anteriormente, o TypeScript incluía automaticamente todos os pacotes em node_modules/@types. Agora não inclui nada por padrão. Projetos que dependem de globais de @types/node, @types/jest, ou pacotes similares verão erros como:
Cannot find name 'process'. Try adding 'node' to the types field in your tsconfig.
Corrija explicitamente:
{
"compilerOptions": {
"types": ["node", "jest"]
}
}
A mudança em rootDir também é comum. Se seus arquivos de saída de repente aparecerem em dist/src/index.js em vez de dist/index.js, adicione "rootDir": "./src" ao seu tsconfig.
Outra mudança que vale a pena observar é noUncheckedSideEffectImports: true. Se sua base de código tem importações apenas de efeito colateral com erros de digitação ou resolução instável, o TypeScript 6.0 tem mais probabilidade de sinalizá-las.
Descontinuações do TypeScript 6.0: O Que Remover Antes do TypeScript 7
Essas opções foram descontinuadas na versão 6.0 para a transição do TypeScript 7.0, e alguns comportamentos mais antigos já foram removidos:
--target es5(o target mais baixo suportado agora é ES2015)--moduleResolution node/--moduleResolution classic→ migre paranodenextoubundler--module amd,umd,systemjs,none--baseUrl→ mova o prefixo diretamente para suas entradaspaths--outFile→ use um bundler como esbuild, Vite, ou RollupesModuleInterop: falseeallowSyntheticDefaultImports: false- Sintaxe legada de namespace
module Foo {}→ usenamespace Foo {} - Sintaxe de importação
assert→ substitua porwith
Você pode silenciar avisos de descontinuação temporariamente com "ignoreDeprecations": "6.0" em seu tsconfig, mas isso deve ser tratado como uma solução de curto prazo.
Atualizando para o TypeScript 6.0
Instale a versão release candidate atual 6.0 com:
npm install -D typescript@rc
Execute tsc --noEmit e trabalhe nos erros. A maioria dos problemas virá do array types, rootDir, importações de efeito colateral e opções descontinuadas.
Conclusão
O TypeScript 6.0 é um lançamento de limpeza, não uma vitrine de recursos. Seu propósito é aposentar padrões legados, alinhar o compilador com JavaScript moderno e preparar o terreno para a linha nativa TypeScript 7.0. Quanto antes você resolver essas mudanças de migração — arrays types atualizados, valores explícitos de rootDir, problemas de importação de efeito colateral e substituições de opções descontinuadas — mais suave será seu caminho para o TypeScript 7.0.
Se você quiser a análise técnica completa da equipe do TypeScript, também pode ler o anúncio oficial do TypeScript 6.0 RC.
Perguntas Frequentes
Provavelmente sim, se seu tsconfig dependia de padrões implícitos. A quebra mais comum vem do campo types agora tendo como padrão um array vazio, rootDir agora apontando para o diretório do tsconfig, e tratamento mais rigoroso de importações de efeito colateral. Execute tsc --noEmit após atualizar para identificar todos os erros antes de fazer mudanças.
O TypeScript 6.0 é o lançamento final construído sobre o compilador original baseado em JavaScript. Ele se concentra em limpar padrões e descontinuar opções legadas. O TypeScript 7.0 deve ser o sucessor nativo baseado em Go, com builds muito mais rápidas e ferramentas de editor. A versão 6.0 é o passo de preparação para essa transição.
Sim. O antigo modo de resolução node no TypeScript 6.0 refere-se ao comportamento legado estilo node10 e está descontinuado, e classic também foi removido. Use nodenext se seu projeto roda diretamente no Node.js, ou bundler se você depende de uma ferramenta como Vite, Webpack, Bun, ou esbuild para resolver e empacotar seus módulos.
Você pode, mas geralmente precisará definir a opção module explicitamente se esnext não é o que você quer. Se seu projeto ainda emite CommonJS, especifique module como commonjs em seu tsconfig. No entanto, considere migrar para configurações de módulo modernas quando possível, já que o TypeScript 6.0 claramente favorece fluxos de trabalho atuais com foco em ESM.
Complete picture for complete understanding
Capture every clue your frontend is leaving so you can instantly get to the root cause of any issue with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.
Check our GitHub repo and join the thousands of developers in our community.