Ce face paths
paths este o listă de reguli „import scris → unde să caute tsc”. Cheia poate avea o singură steluță ("@/*"), iar valoarea este o listă de căi în care steluța este înlocuită cu restul importului. Cu "@/*": ["./src/*"], importul "@/utile/calcul.js" este căutat în ./src/utile/calcul.js (adică calcul.ts).
Ca la baseUrl, tsc nu rescrie importurile în JavaScript-ul generat. Prescurtările funcționează când un bundler (Vite, webpack, esbuild) are aceleași reguli, sau când folosești în schimb câmpul imports din package.json ("#utile/*"), pe care Node.js îl înțelege.
Fără baseUrl, căile din paths sunt relative la fișierul tsconfig.json (de la TypeScript 4.1). Nu are valoare implicită.
Parametri
| Parametru | Descriere |
|---|---|
"tipar": ["cale", ...] |
Tiparul importului (cu cel mult o *) și locurile în care se caută, în ordine. |
Exemple
Exemplul 1: Prescurtarea @/
Fără paths, tsc dă eroarea TS2307 pentru "@/util/calcul.js". Cu paths trece, dar fișierul generat păstrează importul neschimbat, deci trebuie un bundler care să-l înțeleagă.
// tsconfig.json
{
"compilerOptions": {
"module": "nodenext",
"outDir": "dist",
"paths": {
"@/*": ["./src/*"]
}
}
}
// src/util/calcul.ts
export function cuTva(pret: number): number {
return Math.round(pret * 1.19 * 100) / 100;
}
// src/pagini/cos.ts
import { cuTva } from "@/util/calcul.js";
console.log(cuTva(250));
Rezultat (tsc 5.9)
$ npx tsc && cat dist/pagini/cos.js
import { cuTva } from "@/util/calcul.js";
console.log(cuTva(250));
Exemplul 2: Aceeași prescurtare, fără paths
Pachetul @/util nu există în node_modules, deci importul nu poate fi găsit.
// tsconfig.json
{
"compilerOptions": {
"module": "nodenext",
"noEmit": true
}
}
Rezultat (tsc 5.9)
$ npx tsc
src/pagini/cos.ts(1,23): error TS2307: Cannot find module '@/util/calcul.js' or its corresponding type declarations.
Greșeli frecvente
- Să te aștepți ca
tscsă transforme"@/util/calcul.js"în cale relativă. Nu o face; rularea cu Node.js dăERR_MODULE_NOT_FOUND. - Să definești regulile doar în tsconfig și să uiți de configurația bundlerului sau a testelor (Vitest, Jest). Trebuie să fie aceleași în ambele locuri.
Comenzi înrudite
baseUrl: Directorul față de care tsc caută importurile fără ./ (de exemplu „utile/calcul”); nu schimbă JavaScript-ul generat.moduleResolution: Alege regulile după care tsc găsește fișierul din spatele unui import („./calcul.js”, „react”, „@/utile”).resolvePackageJsonExports: Folosește câmpurile exports și imports din package.json la rezolvarea importurilor de pachete și a celor cu #.rootDirs: Tratează mai multe directoare ca pe unul singur la rezolvarea importurilor relative (pentru cod generat separat).