## glossário

O que é TypeScript?

TypeScript é uma linguagem criada pela Microsoft em 2012 que estende o JavaScript adicionando um sistema de tipos estático. Ela é um superconjunto: todo arquivo JavaScript válido já é TypeScript válido, o que permite adotá-la de forma gradual.

Um detalhe importante: navegadores não executam TypeScript. O código passa por um compilador que verifica os tipos e emite JavaScript comum — os tipos existem apenas em tempo de desenvolvimento e desaparecem no arquivo final.

O problema que ele resolve

O mesmo erro, detectado em momentos diferentes
// JavaScript: quebra em produção, quando um usuário clica
function calcularTotal(itens) {
  return itens.reduce((soma, i) => soma + i.preco, 0);
}
calcularTotal(null); // TypeError em runtime

// TypeScript: o editor sublinha antes de você salvar
interface Item {
  nome: string;
  preco: number;
}

function calcularTotal(itens: Item[]): number {
  return itens.reduce((soma, i) => soma + i.preco, 0);
}
calcularTotal(null);
// erro: Argument of type 'null' is not assignable to 'Item[]'

A diferença não é estética. O erro sai do ambiente do usuário e volta para o do desenvolvedor, onde custa minutos em vez de um incidente.

O que a tipagem entrega além da verificação

  • Autocomplete real — o editor sabe quais campos existem em cada objeto, sem adivinhação.
  • Refatoração segura — renomear um campo atualiza todos os usos e aponta o que ficou inconsistente.
  • Documentação viva — a assinatura da função descreve o contrato sem depender de comentário desatualizado.
  • Confiança para mexer em legado — o compilador mostra o raio de impacto antes do deploy.

Recursos que vão além do básico

O sistema de tipos é expressivo o bastante para modelar regras de negócio. Union types restringem valores possíveis, generics criam componentes reutilizáveis sem perder tipagem, e o narrowing permite que o compilador entenda que, dentro de um if, aquele valor já não pode ser nulo.

Modelando estados impossíveis fora do código
type Requisicao =
  | { estado: 'carregando' }
  | { estado: 'erro'; mensagem: string }
  | { estado: 'ok'; dados: string[] };

function render(req: Requisicao) {
  if (req.estado === 'ok') {
    return req.dados.join(', '); // TS sabe que 'dados' existe aqui
  }
  // e sabe que 'dados' NÃO existe nos outros ramos
}

Vale a pena adotar?

Para projetos pequenos e descartáveis, o custo de configuração pode não compensar. Para qualquer código que vá ser mantido por meses ou por mais de uma pessoa, a resposta é quase sempre sim — e o ganho cresce com o tamanho da equipe. A comparação detalhada está no artigo JavaScript vs TypeScript.

## faq

Perguntas frequentes

TypeScript deixa a aplicação mais lenta?

Não. Os tipos são removidos na compilação, então o JavaScript gerado tem desempenho idêntico ao que você escreveria à mão. O único custo é no tempo de build, durante o desenvolvimento.

Dá para migrar um projeto JavaScript aos poucos?

Sim, e é a forma recomendada. Você habilita o TypeScript com regras frouxas, renomeia arquivos conforme mexe neles, e vai apertando as opções do compilador gradualmente. Não é preciso parar o desenvolvimento para converter tudo.

O que significa o tipo any e por que evitá-lo?

any desliga a verificação de tipos naquele ponto, voltando ao comportamento do JavaScript puro. Usar demais anula o benefício da adoção. Quando o tipo é genuinamente desconhecido, unknown é mais seguro: obriga a verificar antes de usar.

## leia também

Artigos relacionados