noEmit în TypeScript

tsc doar verifică tipurile și nu scrie niciun fișier (.js, .d.ts, .map).

Sintaxă
"compilerOptions": { "noEmit": true }

tsc --noEmit

Ce face noEmit

Cu noEmit, tsc devine doar un verificator de tipuri: citește proiectul, raportează erorile și nu scrie nimic pe disc. Este configurația obișnuită când altă unealtă produce JavaScript-ul (Vite, Next.js, esbuild) sau când codul rulează direct ca .ts (Node.js, Deno, Bun).

Comanda tsc --noEmit este des folosită în CI și ca script "typecheck" în package.json. Permite allowImportingTsExtensions. Implicit: false.

Parametri

Parametru Descriere
true Nu se scrie niciun fișier.
false Valoarea implicită: se scriu .js (și restul, după opțiuni).

Exemple

Exemplul 1: Doar verificare

Cu noEmit, după tsc directorul conține doar fișierele de la început. Cu --noEmit false, apare index.js.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "target": "es2022",
    "noEmit": true
  }
}

// index.ts
const x: number = 1;
console.log(x);

Rezultat (tsc 5.9)

$ npx tsc && ls
index.ts
package.json
tsconfig.json

$ npx tsc --noEmit false && ls
index.js
index.ts
package.json
tsconfig.json

Greșeli frecvente

  • Să adaugi noEmit și să te miri că directorul dist rămâne vechi. Nu se mai scrie nimic; șterge-l sau scoate opțiunea.
  • Să combini noEmit cu composite în proiecte referite: tsc -b are nevoie de declarații.

Comenzi înrudite

  • noEmitOnError: Nu scrie niciun fișier dacă există erori de tip; implicit, tsc scrie JavaScript-ul chiar și cu erori.
  • emitDeclarationOnly: tsc scrie doar fișierele .d.ts, fără .js; JavaScript-ul este produs de altă unealtă (esbuild, Babel, swc).
  • noCheck: Generează fișierele fără verificarea completă a tipurilor; raportează doar erorile de sintaxă și de emitere.
  • allowImportingTsExtensions: Permite importuri cu extensia .ts („./calcul.ts”), când codul este rulat direct de Node.js, Deno, Bun sau de un bundler.