12k
All articles

Novidades no TypeScript 6.0

TypeScript 6.0 muda padrões, descontinua opções legadas e adiciona suporte a ES2025, tipos de Temporal e dicas de migração antes do TypeScript 7.0.

OpenReplay Team
OpenReplay Team
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

Meu projeto TypeScript existente vai quebrar quando eu atualizar para 6.0?

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.

Qual é a diferença entre TypeScript 6.0 e 7.0?

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.

Devo migrar de moduleResolution node para nodenext ou bundler?

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.

Posso continuar usando módulos CommonJS com TypeScript 6.0?

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.

Open-source session replay

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.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.