Menu

TypeScript 7: compilador nativo, o que mudou e como atualizar

O TypeScript 7 é o compilador do TypeScript reescrito em Go como programa nativo: cerca de dez vezes mais rápido, com o mesmo comando tsc e a mesma linguagem. O que mudou para quem usa (novos padrões, opções removidas, a API JavaScript ausente), quais ferramentas ainda precisam do TypeScript 6 e como atualizar.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

O TypeScript 7 é o compilador do TypeScript reescrito em Go e distribuído como programa nativo. A linguagem é a mesma, o comando continua sendo tsc e o pacote npm continua sendo typescript; o que muda é a velocidade (builds completos cerca de dez vezes mais rápidos), um conjunto de novos padrões e a remoção de opções que o TypeScript 6 marcou como obsoletas. O TypeScript 7.0 foi lançado em 8 de julho de 2026, e a versão no npm é a 7.0.2.

npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2

Uma das poucas diferenças visíveis no nível dos tipos é como os template literal types dividem strings. O JavaScript guarda strings como unidades de código UTF-16, e um emoji como 😀 ocupa duas delas:

O TypeScript 6 dividia template literal types por unidade de código, como text[0]. O TypeScript 7 divide por code point, como [...text], então o emoji fica inteiro:

type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;

type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]

Por que o TypeScript foi reescrito em Go

Até a versão 6, o compilador do TypeScript era escrito em TypeScript e rodava no Node.js. Em bases de código grandes isso significava builds lentos, editor lento para iniciar e alto uso de memória.

Anders Hejlsberg anunciou a versão nativa em 11 de março de 2025, em um post chamado "A 10x Faster TypeScript". A nova base de código recebeu o codinome Corsa, e a de JavaScript, Strada. O time portou o código do compilador existente em vez de redesenhar o verificador de tipos, então o novo compilador segue as mesmas regras e mostra os mesmos erros. O TypeScript 6.0 (março de 2026) foi a última versão da base em JavaScript e serviu de ponte: marcou como obsoleto tudo o que o TypeScript 7 removeria. O TypeScript 7.0 veio em 8 de julho de 2026.

Quanto o TypeScript 7 é mais rápido

Builds completos de projetos open source, como publicados no lançamento da 7.0:

ProjetoTypeScript 6TypeScript 7GanhoMemória
VS Code125,7 s10,6 s11,9xde 5,2 GB para 4,2 GB
Sentry139,8 s15,7 s8,9xde 4,9 GB para 4,6 GB
Bluesky24,3 s2,8 s8,7xde 1,8 GB para 1,3 GB
Playwright12,8 s1,47 s8,7xde 1,0 GB para 0,9 GB
tldraw11,2 s1,46 s7,7xde 0,6 GB para 0,5 GB

Essas execuções usaram o padrão de 4 workers de verificação de tipos. Com --checkers 8 na mesma máquina, o build do VS Code levou 7,51 s (16,7x) e o do tldraw 1,06 s (10,6x), com mais uso de memória.

O editor ganha na mesma proporção. O language service agora roda como um language server nativo: no código do VS Code, o tempo entre abrir o editor e ver o primeiro erro de um arquivo caiu de cerca de 17,5 segundos para menos de 1,3 segundo. O ganho importa mais em monorepos, pipelines de CI e editores com bases de código grandes.

O que continua igual

  • O comando e o pacote. npm install --save-dev typescript e npx tsc. Na instalação, o npm escolhe um binário pré-compilado para a sua plataforma a partir de dependências opcionais como @typescript/typescript-linux-x64, então não há mais nada a configurar.
  • A linguagem. A mesma sintaxe, o mesmo sistema de tipos, os mesmos códigos de erro.
  • Os resultados. As notas de lançamento dizem que praticamente todo código que compila sem erros no TypeScript 6.0, com a flag stableTypeOrdering ligada e sem nenhuma configuração ignoreDeprecations, deve compilar de forma idêntica no TypeScript 7.0.

Novos padrões

O TypeScript 6.0 mudou estes padrões e o TypeScript 7 os mantém. Eles só importam para opções que o seu tsconfig.json não define:

OpçãoNovo padrãoEfeito se você dependia do antigo
stricttrueProjetos que nunca definiram strict agora recebem strict null checks, noImplicitAny e o resto
targetes2025, a versão mais nova antes de esnextA saída mantém a sintaxe moderna, a menos que você defina um target mais antigo
moduleesnextSaída em módulo ES, a menos que você defina nodenext ou commonjs
types[]Pacotes @types instalados não são mais carregados automaticamente: adicione "types": ["node"] (["*"] restaura o comportamento antigo)
rootDir./, a pasta que contém o tsconfig.jsonCom outDir definido e os fontes em src, aparece error TS5011 até você definir "rootDir": "./src"
noUncheckedSideEffectImportstrueUm import de efeito colateral como import "./styles.css" precisa de uma declaração de módulo (declare module "*.css";), que os pacotes de tipos dos frameworks normalmente fornecem
stableTypeOrderingSempre ligado, não pode ser desligadoOs tipos são ordenados do mesmo jeito em toda execução, então as mensagens de erro e a saída .d.ts não dependem da ordem de verificação

Opções e sintaxe removidas

Opções marcadas como obsoletas no TypeScript 6 são erros no TypeScript 7:

  • target: es5, e downlevelIteration, que só existia para saída ES5.
  • moduleResolution: node (também chamado node10) e classic. Use nodenext ou bundler.
  • module: amd, umd, system e none.
  • baseUrl (escreva paths relativos ao arquivo tsconfig) e outFile (use um bundler).
  • esModuleInterop: false, allowSyntheticDefaultImports: false e alwaysStrict: false; as três estão sempre ligadas.

O compilador diz exatamente o que remover:

error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.

Duas formas antigas de sintaxe também são erros: module Foo { } para um namespace (escreva namespace Foo { }; declare module "foo" para um pacote não é afetado) e import assertions (assert { type: "json" } vira with { type: "json" }).

index.ts(2,8): error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.

Trocar module por namespace na linha 2 resolve, e o programa imprime 4.

Na linha de comando, tsc file.ts em uma pasta que tem tsconfig.json agora para com error TS5112, em vez de ignorar a configuração em silêncio. Rode só tsc, ou passe --ignoreConfig. Em arquivos JavaScript verificados com JSDoc, o TypeScript 7 lê os tipos de forma mais parecida com o TypeScript: @enum não é mais reconhecido, e um valor usado como tipo precisa de typeof. A página sobre tsconfig mostra o substituto de cada opção removida.

Ferramentas que ainda precisam do TypeScript 6

O TypeScript 7.0 não traz uma API JavaScript estável. require("typescript") retorna só informações de versão (version e versionMajorMinor), e as funções do compilador que outras ferramentas chamam (createProgram, o language service) não estão lá; os pontos de entrada typescript/unstable/* do pacote são experimentais e não servem de substituto. As notas de lançamento dizem que o time espera que o TypeScript 7.1 traga uma API nova e diferente. Até lá, tudo o que importa o compilador como biblioteca continua usando o TypeScript 6:

  • typescript-eslint (regras de lint que usam tipos)
  • Ferramentas de linguagem para arquivos Vue, Svelte e Astro, a verificação de tipos de templates do Angular e o MDX
  • ts-node, que quebra ao iniciar com o TypeScript 7 instalado

Para esses casos, o TypeScript oferece um pacote de compatibilidade, @typescript/typescript6, que instala o TypeScript 6 com a API completa e um comando tsc6. Com aliases do npm, um projeto pode ter os dois: o TypeScript 7 faz os builds, e as ferramentas que importam typescript recebem a versão 6.

{
    "devDependencies": {
        "@typescript/native": "npm:typescript@^7.0.2",
        "typescript": "npm:@typescript/typescript6@^6.0.2"
    }
}

Depois do npm install:

$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3

Se você não usa nenhuma dessas ferramentas, instale o typescript normal e pule esta parte.

Novas opções de linha de comando

O compilador nativo faz o parsing, a verificação e a geração em paralelo. Três flags novas controlam isso, e as notas de lançamento chamam --checkers e --builders de experimentais:

FlagO que faz
--checkers NNúmero de workers de verificação de tipos por projeto (padrão 4). Mais workers podem ajudar em máquinas com muitos núcleos e custam memória; menos combinam com runners de CI pequenos.
--builders NNúmero de projetos compilados ao mesmo tempo em um --build de project references. Multiplica com --checkers: 4 builders com 4 checkers podem rodar 16 checkers de uma vez.
--singleThreadedDesliga todo o paralelismo, para depuração ou limites de memória apertados.

O --watch também foi reescrito, sobre uma versão em Go do file watcher do bundler Parcel.

Suporte nos editores

Para o VS Code, o time do TypeScript publica uma extensão própria do TypeScript 7; depois de instalada ela vira o padrão, e o comando "Disable TypeScript 7 Language Server" da paleta de comandos volta para o TypeScript 6. O Visual Studio mais recente ativa o TypeScript 7 automaticamente de acordo com o workspace, e outros editores (Neovim, Zed, Sublime Text, Emacs) se conectam a ele pelo Language Server Protocol. Projetos com arquivos Vue, Svelte, Astro ou MDX, ou com templates Angular, mantêm o suporte de editor baseado no TypeScript 6 até o TypeScript 7 expor uma API que essas ferramentas possam usar. Um projeto Angular ainda pode rodar o tsc do TypeScript 7 para verificações rápidas do projeto inteiro.

Como atualizar para o TypeScript 7

  1. Atualize primeiro para o TypeScript 6, se estiver no 5.x: npm install --save-dev typescript@6. Corrija todos os erros de opções obsoletas que ele mostrar, em vez de silenciá-los com "ignoreDeprecations": "6.0".
  2. Ligue "stableTypeOrdering": true no TypeScript 6 e corrija o que mudar. Essa é a configuração que, segundo o time, compila de forma idêntica no 7.
  3. Defina as opções cujos padrões mudaram, se você dependia dos valores antigos, por exemplo "types": ["node"] e "rootDir": "./src".
  4. Instale o TypeScript 7: npm install --save-dev typescript@latest. Depois, se quiser, remova o stableTypeOrdering; ele está sempre ligado no 7.
  5. Confira as ferramentas. Se você usa typescript-eslint, ts-node ou um framework com verificação de tipos em templates, configure o alias do TypeScript 6 mostrado acima.
  6. Confirme a versão com npx tsc --version e garanta que o CI instala a partir do lockfile atualizado.

tsgo e as builds de preview

Antes do lançamento, o compilador nativo era publicado como @typescript/native-preview, cujo comando era tsgo, para poder ser testado ao lado do tsc em JavaScript. Artigos de 2025 e do início de 2026 falam em tsgo. Com a 7.0 esse nome saiu do uso diário: o compilador nativo é o tsc, e as builds nightly são publicadas como typescript@next (hoje, versões de desenvolvimento da 7.1).

Perguntas frequentes

O que é o TypeScript 7?

O TypeScript 7 é a primeira versão do compilador do TypeScript reescrito em Go e compilado como programa nativo, em vez de rodar como JavaScript no Node.js. Ele verifica a mesma linguagem com o mesmo comando tsc, e as notas de lançamento mostram builds completos normalmente de 8 a 12 vezes mais rápidos que no TypeScript 6. Foi lançado em 8 de julho de 2026.

O TypeScript 7 é escrito em Go?

Sim. O compilador e o language service foram portados de TypeScript para Go (o projeto tinha o codinome Corsa, e a base em JavaScript, Strada). Você continua instalando pelo npm como o pacote typescript; o npm escolhe um binário nativo pré-compilado para o seu sistema operacional e CPU.

Preciso mudar meu código para o TypeScript 7?

Normalmente não o código, às vezes a configuração. O TypeScript 7 remove opções que o 6.0 marcou como obsoletas (target: es5, moduleResolution: node, baseUrl, outFile e outras) e muda padrões como strict: true e types: []. Código que compila sem erros no TypeScript 6.0, com stableTypeOrdering ligado e sem ignoreDeprecations, deve compilar de forma idêntica.

O que é o tsgo?

tsgo era o nome do comando nas versões de preview do compilador nativo, publicadas como o pacote npm @typescript/native-preview antes do lançamento da 7.0. No TypeScript 7 o compilador nativo é simplesmente o tsc do pacote typescript, e as builds nightly vêm de typescript@next.

O typescript-eslint funciona com o TypeScript 7?

Não diretamente. O TypeScript 7.0 não traz uma API JavaScript estável, e ferramentas como typescript-eslint, ts-node e os verificadores de templates de Vue, Svelte e Angular chamam essa API. Mantenha o TypeScript 6 instalado para elas pelo pacote @typescript/typescript6 (um alias do npm) e use o tsc do TypeScript 7 para os builds. O time do TypeScript espera que o TypeScript 7.1 traga uma API nova e diferente.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR