TypeScript
O que é
Pense em um corretor ortográfico que sublinha uma palavra errada enquanto você digita, antes mesmo de você enviar o texto. É isso que o TypeScript faz para o seu código. Ele é o JavaScript com um sistema de tipos estático adicionado por cima — um conjunto de regras que verifica seu código enquanto você escreve e sinaliza erros cedo. Ele é compilado para JavaScript puro, então roda em qualquer lugar onde o JS roda — navegadores, Node, Deno, Bun, runtimes de borda ( runtimes) — capturando toda uma classe de bugs antes mesmo de o código ser executado.
Pontos fortes
- Tipos estáticos capturam erros de digitação, problemas com valores nulos e incompatibilidades de formato (shape) em tempo de compilação.
- Experiência excelente no editor: autocompletar, documentação inline, refatorações seguras.
- Adoção gradual — você pode tipar tanto quanto quiser, ou tão pouco quanto quiser.
- A mesma linguagem no e no , com um enorme ecossistema npm (Node Manager).
Concessões (trade-offs)
- Uma etapa de build/compilação e um
tsconfig.jsonpara configurar. - O sistema de tipos é poderoso o suficiente para se tornar genuinamente complexo (generics, tipos condicionais) e pode virar um sorvedouro de tempo.
- As verificações de tipo só acontecem enquanto você escreve e compila o código. Uma vez que o programa está de fato rodando, essas verificações desaparecem — então você ainda precisa de validação em tempo de execução (runtime validation, uma segunda checagem que inspeciona os dados reais enquanto o programa roda, por exemplo com Zod) para dados de entrada não confiáveis.
- Atrito de configuração e ferramentas entre diferentes bundlers e runtimes.
Quando usar
Recorra ao TypeScript em qualquer projeto JavaScript não trivial, especialmente com múltiplos colaboradores ou vida útil longa. É o padrão para aplicações web modernas (React, Next.js, SvelteKit), backends Node/edge, e qualquer lugar onde a segurança das refatorações importa.
Encaixe no vibe coding
Assistentes de IA se saem muito bem com TypeScript porque o verificador de tipos oferece a eles — e a você — um ciclo de feedback rápido: cole o erro de compilação de volta e o modelo geralmente corrige de forma limpa. Direcione a IA pedindo tipos precisos em vez de any, e peça validação em tempo de execução nas fronteiras de confiança (entradas de (Application Programming Interface), variáveis de ambiente (env vars)). Diga explicitamente as versões do seu runtime e para que os imports e configurações gerados sejam compatíveis. Quando os tipos ficarem complicados, peça ao modelo que explique o tipo inferido em vez de simplesmente ampliá-lo (widening) sem entender.
type User = { id: number; name: string; email?: string };
function greet(user: User): string {
return `Hi ${user.name}` + (user.email ? ` <${user.email}>` : "");
}
console.log(greet({ id: 1, name: "Ada" }));