Introdução
Tecnicamente o TypeScript faz transpilação: converte código TS → JS (mesma abstração, linguagem diferente), diferente de uma compilação clássica que gera código de máquina (como C → binário).
Na prática, a comunidade usa os dois termos de forma intercambiável, e o próprio time do TypeScript chama de "compilation". Não perca sono com isso.
O fluxo com tsc
app.ts → [tsc] → app.js → [node] → execução
O tsc lê seu TypeScript, checa os tipos, e emite JavaScript puro. O Node não sabe nada sobre TypeScript — ele só executa o .js resultante.
Configuração via tsconfig.json (recomendado em vez de flags no CLI):
{
"compilerOptions": {
"target": "ES2020", // versão do JS emitido
"module": "commonjs", // sistema de módulos
"outDir": "./dist", // onde os .js vão parar
"rootDir": "./src", // onde estão os .ts
"strict": true, // habilita todas as checagens rígidas
"esModuleInterop": true
}
}
ts-node: pular o passo manual
O ts-node executa TypeScript diretamente, sem gerar .js em disco:
npx ts-node app.ts
# ou com hot reload:
npx ts-node-dev app.ts
Internamente ele ainda transpila, só faz isso em memória. Útil para desenvolvimento e scripts rápidos, mas não use em produção — o overhead de transpilação em runtime é real.
Comparativo prático
tsc + node
|
ts-node |
|
|---|---|---|
Gera .js em disco |
✅ | ❌ (memória) |
| Checagem de tipos | ✅ | ✅ (pode desabilitar com --transpile-only) |
| Produção | ✅ | ❌ |
| Dev rápido / scripts | Chato | ✅ |
Fluxo recomendado para um projeto real
# inicializa
npm init -y
npm install typescript --save-dev
npx tsc --init # gera tsconfig.json
# dev
npx ts-node-dev src/index.ts
# build para produção
npx tsc
node dist/index.js
Top comments (0)