types în TypeScript

Alege exact ce pachete de tipuri globale (din node_modules/@types) se încarcă automat; [] nu încarcă niciunul.

Sintaxă
"compilerOptions": { "types": ["node"] }

tsc --types node

Ce face types

Implicit, tsc încarcă toate pachetele din node_modules/@types, chiar dacă proiectul nu le folosește. Într-un proiect mare pot fi zeci, iar tipurile lor globale (de exemplu describe și it din @types/jest) apar peste tot.

Cu types, alegi lista: "types": ["node"] încarcă doar @types/node, iar "types": [] nu încarcă niciunul. Pachetele importate explicit în cod (import express from "express") își găsesc tipurile în continuare; types privește doar tipurile globale, încărcate fără import.

tsc --init din 5.9 scrie "types": [] și sugerează, pentru Node.js, "types": ["node"] după npm install -D @types/node. Exemplele de pe acest site sunt verificate cu --types node.

Parametri

Parametru Descriere
["node", ...] Doar aceste pachete de tipuri globale sunt încărcate.
[] Niciun pachet global; doar ce importă codul.
(lipsă) Implicit: toate pachetele din node_modules/@types.

Exemple

Exemplul 1: process fără tipurile Node.js

Cu "types": [], @types/node (instalat în node_modules) nu este încărcat și process nu există. Mesajul spune chiar ce trebuie făcut. Cu --types node, compilarea trece.

// tsconfig.json
{
  "compilerOptions": {
    "types": [],
    "noEmit": true
  }
}

// index.ts
console.log(process.version);

Rezultat (tsc 5.9)

$ npx tsc
index.ts(1,13): error TS2591: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.

$ npx tsc --types node

Exemplul 2: Tipuri Node.js în cod

Cu --types node, obiectele globale din Node.js (process, Buffer) au tipuri.

const text = Buffer.from("Iași", "utf8");
console.log("octeți:", text.length);
console.log("platforma are tip:", typeof process.platform);
console.log("argumente:", process.argv.length >= 2);

Rezultat

octeți: 5
platforma are tip: string
argumente: true

Greșeli frecvente

  • Să scrii "types": ["@types/node"]. Se scrie numele fără @types/: "node".
  • Să adaugi "types": ["node"] și să pierzi tipurile globale ale testelor (describe, expect). Adaugă și pachetul lor în listă.

Comenzi înrudite

  • typeRoots: Alege directoarele din care tsc încarcă automat pachetele de tipuri globale (implicit node_modules/@types).
  • lib: Alege ce declarații de tipuri pentru mediul de rulare sunt incluse: versiunea JavaScript (es2022) și API-urile (dom, webworker).
  • skipLibCheck: Nu mai verifică erorile din fișierele .d.ts (ale pachetelor și ale proiectului); compilarea devine mai rapidă.
  • --init: Creează un fișier tsconfig.json nou, cu setările recomandate de versiunea curentă de TypeScript.