TypeScript vs JavaScript: a diferença real

TypeScript vs JavaScript

TypeScript vs JavaScript: o que muda, o que o tsc gera | We.Inc

Veja TypeScript e o JavaScript em que ele é compilado lado a lado, entenda o que o type checker detecta, por que os tipos somem em runtime e quando JavaScript puro basta.

TypeScript é JavaScript mais um sistema de tipos. Você escreve JavaScript comum com anotações de tipo opcionais, e o compilador tsc as verifica e depois as remove para gerar JavaScript puro. Navegadores e Node rodam essa saída, então os tipos nunca existem em runtime. O ganho é pegar erros enquanto você edita, não ter código mais rápido.

Lado a lado

Escolha um exemplo abaixo para ver um arquivo TypeScript ao lado do JavaScript que o tsc gerou para ele. Na maioria das vezes, a saída é o seu código com as anotações apagadas. Alguns recursos, como enums, geram código de verdade, e essa diferença importa na hora de escolher ferramentas.

Perguntas frequentes

TypeScript é uma linguagem diferente de JavaScript?

É um superconjunto. Todo programa TypeScript vira JavaScript, e o TypeScript adiciona sintaxe para descrever o formato dos valores. Aprenda JavaScript primeiro; os tipos ficam por cima dele em vez de substituí-lo.

O TypeScript deixa meu site mais rápido?

Não. As anotações são removidas antes de o código rodar, então o navegador executa o mesmo JavaScript que você teria escrito à mão. Os benefícios são menos bugs chegando aos usuários e refatorações mais seguras.

O tsc se recusa a gerar o build quando há um erro de tipo?

Não por padrão. O tsc aponta o erro e ainda assim escreve o arquivo .js, o que torna possível uma migração gradual. Defina noEmitOnError se quiser que uma verificação com falha bloqueie a saída.

O Node consegue rodar arquivos .ts sem etapa de build?

Versões recentes do Node removem a sintaxe de tipos apagável e rodam o arquivo, com o type stripping ativado por padrão desde a v23.6.0 e a v22.18.0. O Node não verifica tipos, e sintaxes que precisam de código gerado, como enums, são rejeitadas.

Quando JavaScript puro é a melhor escolha?

Scripts pequenos, protótipos rápidos e páginas com poucas linhas de interatividade raramente compensam a configuração. Quando um projeto tem vários arquivos, várias pessoas ou dados passando entre módulos, o checker começa a economizar tempo de verdade.

O que o tsc faz de verdade

Os tipos são apagados, então valide os dados reais

Recursos que não são simplesmente apagados

Adicionar TypeScript a um projeto JavaScript

Instalar e criar um tsconfig

Instala o compilador localmente, escreve um tsconfig.json inicial e roda uma verificação sem gerar arquivos.

allowJs permite que arquivos .js antigos fiquem ao lado de arquivos .ts novos durante uma migração; noEmit deixa a saída por conta do seu bundler.

Verificando dados que o compilador não enxerga

Uma guarda em runtime que estreita o tipo

A função verifica o valor de verdade, e o tipo de retorno informa ao compilador o que ela provou.

Anotações

Os tipos do parâmetro e do retorno são verificados e depois apagados. O corpo não é alterado.

Interface

Uma interface não gera saída nenhuma. Ela existe só para o checker.

Enum

Um enum comum vira um objeto real com mapeamento reverso, então isto é código gerado, não sintaxe apagada.

const enum

O tsc substitui os membros de const enum pelos números diretamente e deixa um comentário com o nome original.

Erro de tipo

O tsc aponta: Argument of type 'string' is not assignable to parameter of type 'number'. Ele ainda escreve o arquivo, a menos que noEmitOnError esteja definido.

TypeScript e o JavaScript em que ele se transforma

Escolha um exemplo

TypeScript que você escreve

JavaScript que o tsc gera (target es2022)

Copiar TypeScript

Copiar JavaScript

{n} linhas de entrada, {v} linhas de saída

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site