DevPath · Aprenda a programar ESPTEN

Node com TypeScript

Por que TypeScript no backend

JavaScript com tipos

TypeScript é um superconjunto de JavaScript: todo JS válido é TS válido, mas o TS adiciona um sistema de tipos estático. Você anota qual forma têm seus dados e um compilador os verifica antes de executar o programa.

function somar(a: number, b: number): number {
  return a + b;
}

somar(2, 3);      // OK
somar(2, "3");    // ❌ erro de COMPILAÇÃO: "3" não é number

Em JavaScript esse somar(2, "3") seria executado e retornaria "23" (um bug silencioso). Em TypeScript nem sequer compila.

O que você ganha

tsconfig e compilação

A configuração do projeto vive em tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "strict": true,
    "outDir": "dist"
  }
}

strict: true ativa as verificações mais úteis (entre elas strictNullChecks, que te obriga a tratar null/undefined).

Para executar seu código você tem dois caminhos:

Chave: em runtime continua sendo JavaScript

O compilador apaga os tipos (type erasure). O .js que o Node executa não tem nem rastro de : number nem de interface:

interface Usuario { nome: string; idade: number; }

function saudar(u: Usuario) {
  return "Olá " + u.nome;
}

compila aproximadamente para:

function saudar(u) {
  return "Olá " + u.nome;
}

A interface desaparece. Isso tem uma consequência enorme, que veremos no final: os tipos não existem em tempo de execução, então não protegem contra dados externos (o que chega por HTTP, do banco de dados, de um JSON.parse...). Os tipos garantem que seu código é coerente; não garantem que os dados de entrada tenham a forma prometida.

Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
Tipar uma API Express →