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.