Back

Novidades no TypeScript 6.0

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", um target flutuante que atualmente resolve para es2025, types: [], e noUncheckedSideEffectImports: 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 comportamento node10), --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 para Date, tipada sob esnext ou temporal.esnext
  • Map.getOrInsert e Map.getOrInsertComputed — padrões de upsert mais limpos para Map e WeakMap, disponíveis através de esnext
// 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.

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çãoPadrão no TypeScript 6.0
stricttrue
moduleesnext
targetversão ES suportada atual (es2025 hoje)
types[] (vazio)
rootDirdiretório do tsconfig
noUncheckedSideEffectImportstrue

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 para nodenext ou bundler
  • --module amd, umd, systemjs, none
  • --baseUrl → mova o prefixo diretamente para suas entradas paths
  • --outFile → use um bundler como esbuild, Vite, ou Rollup
  • esModuleInterop: false e allowSyntheticDefaultImports: false
  • Sintaxe legada de namespace module Foo {} → use namespace Foo {}
  • Sintaxe de importação assert → substitua por with

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.

OpenReplay