Ce face typeRoots
Implicit, tsc încarcă automat toate pachetele din node_modules/@types (din directorul proiectului și din toate directoarele părinte). Așa ajung în program tipuri globale ca process din @types/node, fără niciun import.
typeRoots înlocuiește această listă de directoare. Fiecare subdirector al unui director din typeRoots este tratat ca un pachet de tipuri (de exemplu tipuri/magazin/index.d.ts). Dacă o setezi și vrei în continuare @types, adaugă explicit "./node_modules/@types" în listă.
Pentru a alege ce pachete se încarcă (nu de unde), folosește types. Nu are valoare implicită scrisă; comportamentul implicit este cel descris mai sus.
Parametri
| Parametru | Descriere |
|---|---|
["dir", ...] |
Directoarele cu pachete de tipuri, relative la tsconfig.json. |
Exemple
Exemplul 1: Tipuri globale proprii
include conține doar src, deci tipuri/ intră în program doar prin typeRoots. --listFilesOnly arată că fișierul a fost încărcat (au fost scoase fișierele bibliotecii standard). Cu un alt director în typeRoots, MAGAZIN nu mai este găsit.
// tsconfig.json
{
"compilerOptions": {
"typeRoots": ["./tipuri"],
"noEmit": true
},
"include": ["src"]
}
// tipuri/magazin/index.d.ts
declare const MAGAZIN: { nume: string; oras: string };
// src/index.ts
console.log(MAGAZIN.nume, MAGAZIN.oras);
Rezultat (tsc 5.9)
$ npx tsc --listFilesOnly
/proiect/src/index.ts
/proiect/tipuri/magazin/index.d.ts
$ npx tsc --typeRoots ./altceva
src/index.ts(1,13): error TS2304: Cannot find name 'MAGAZIN'.
src/index.ts(1,27): error TS2304: Cannot find name 'MAGAZIN'.
Greșeli frecvente
- Să setezi
typeRootsdoar cu directorul tău și să pierzi@types/node. Lista o înlocuiește pe cea implicită. - Să pui în
typeRootsfișiere.d.tsdirect, nu în subdirectoare. Fiecare pachet trebuie să fie un subdirector (cuindex.d.tssaupackage.json).
Comenzi înrudite
types: Alege exact ce pachete de tipuri globale (din node_modules/@types) se încarcă automat; [] nu încarcă niciunul.skipLibCheck: Nu mai verifică erorile din fișierele .d.ts (ale pachetelor și ale proiectului); compilarea devine mai rapidă.lib: Alege ce declarații de tipuri pentru mediul de rulare sunt incluse: versiunea JavaScript (es2022) și API-urile (dom, webworker).