O problema que o TypeScript resolve
JavaScript é dinamicamente tipado — isso significa que um bug de tipo só aparece em tempo de execução, muitas vezes em produção, na tela do usuário.
Um exemplo real
Sem TypeScript:
function calcularSaldo(transacoes) {
return transacoes.reduce((acc, tx) => acc + tx.valor, 0);
}
Se alguém passar tx.value em vez de tx.valor, o código quebra silenciosamente.
Com TypeScript:
type Transacao = {
valor: number;
tipo: "entrada" | "saida";
};
function calcularSaldo(transacoes: Transacao[]): number {
return transacoes.reduce((acc, tx) => acc + tx.valor, 0);
}
O editor avisa imediatamente se você usar o campo errado.
Conclusão
TypeScript não é burocracia — é documentação executável. Todo projeto novo que começo já inicia com TypeScript.