Opțiunile tsconfig care contează, grupate pe rol: strictețea verificării de tipuri, setarea țintei de limbaj și a modulelor, controlul a ceea ce se generează, maparea căilor de import, structurarea build-urilor multi-proiect și reglarea verificărilor rămase.
Un tsconfig îi spune compilatorului ce fișiere să includă și cât de strict să fie. Două opțiuni fac cea mai mare parte din muncă: target stabilește nivelul de generare JavaScript, iar strict pornește verificările de siguranță în pachet. Opțiunile de mai jos sunt cele care schimbă comportamentul; flagurile active implicit sunt marcate. Derivă-ți configurația dintr-o bază, apoi suprascrie doar ce diferă.
Tabel de referință · 55 intrări
Opțiuni tsconfigExplained
55 of 55 rows
Strictitudine
Întrerupătorul principal: activează strictNullChecks, noImplicitAny și alte câteva simultan.
Eroare la parametri și variabile al căror tip nu poate fi dedus (altfel ar fi any).
null și undefined nu mai sunt atribuibile oricărui tip; optezi explicit.
Verifică parametrii funcțiilor contravariant; prinde tipuri de parametri de callback nesigure.
Verifică tipurile pentru bind, call și apply față de parametrii declarați ai funcției.
Eroare când o proprietate de clasă nu are valoare inițială și nu este atribuită în constructor.
O proprietate opțională { p?: T } nu mai acceptă o atribuire explicită cu undefined.
Cere cuvântul-cheie override la membrii care ascund un membru al clasei de bază.
Eroare la variabile locale declarate dar niciodată citite.
Eroare la parametri de funcție declarați dar niciodată citiți.
Eroare la instrucțiuni-expresie fără efect.
Accesul cu punct este interzis pentru chei dintr-o index signature; folosește paranteze (obj["key"]).
Eroare când o cale de cod returnează o valoare, dar alta nu.
Eroare când un case din switch cade în următorul fără break.
Limbaj și module
Nivelul de generare JavaScript (ex. ES2022); țintele mai noi generează mai puțin downleveling.
Sistemul de module din codul generat (ex. ESNext, CommonJS, NodeNext).
Regulile reale ale Node: fiecare fișier alege CJS sau ESM după cel mai apropiat package.json, iar importurile relative au nevoie de extensii de fișier.
Cum sunt rezolvate căile de import (ex. bundler, node, nodenext).
Când un fișier contează ca modul: auto (după prezența import/export), legacy sau force (întotdeauna).
Permite stilul importului default din modulele CommonJS (implicit true în majoritatea setupurilor).
Permite importuri default din module care exportă doar valori numite (doar la nivel de tipuri).
Importurile sunt generate exact cum au fost scrise; importurile de tipuri trebuie să folosească import type (TS 5).
Permite importurilor să încarce fișiere .json ca valori tipizate.
Include fișiere .js ca intrare ale compilării.
Verifică tipurile și în fișierele .js, citindu-le comentariile JSDoc; implică allowJs.
Cum se compilează .tsx: react-jsx (runtime automat), react (React.createElement) sau preserve.
Restrânge pachetele @types incluse automat la această listă; un array gol nu include niciunul.
Folderele scanate pentru pachete @types, în loc de fiecare node_modules/@types din arbore.
Asigură că fiecare fișier poate fi transpilat izolat (cerut de bundlere și esbuild).
Generare de cod
Unde se scrie JavaScript-ul compilat.
Rădăcina fișierelor sursă; menține stabilă forma arborelui de ieșire.
Generează fișiere .js.map ca debuggerele să mapheze înapoi la TypeScript.
Înglobează sursa mapată drept comentariu în fișierul .js, în loc de un fișier .js.map separat.
Generează declarații de tipuri .d.ts (necesar pentru biblioteci).
Generează fișiere .d.ts.map ca editoarele să sară din declarații înapoi la sursa TypeScript.
Generează doar fișiere .d.ts; JavaScript-ul rămâne în seama unui bundler (cere declaration sau composite).
Reutilizează helpere precum __rest din tslib, în loc să le genereze în fiecare fișier.
for..of, spread și destructurare corecte peste iterabile când target este anterior lui ES2015.
Elimină comentariile din JavaScript-ul generat.
Doar verificare de tipuri; nu scrie niciun fișier (folosit când un bundler face generarea).
Căi
Un director de bază pentru rezolvarea modulelor non-relative.
Mapează prefixe de import la locații, ex. { "@/*": ["src/*"] }.
Tratează mai multe directoare ca o singură rădăcină virtuală la rezolvare.
Structura proiectului
Marchează un proiect ca buildabil pentru referințe între proiecte (activează declaration, incremental).
Depinde de alte proiecte tsconfig pentru build-uri mai rapide și izolate.
Salvează informațiile de build ca să sară fișierele neschimbate la următoarea rulare.
Alte verificări
Sare peste verificarea tipurilor din fișierele .d.ts pentru viteză (implicit true).
Eroare la importurile care nu se potrivesc cu majusculele reale ale numelui fișierului.
Accesul la array și la index returnează T | undefined, nu T.
Câmpurile claselor sunt create cu Object.defineProperty în loc de simplă atribuire (implicit true pentru targeturile ES2022+).
Activează sintaxa de decoratoare veche, folosită de frameworkurile mai vechi (pre-standard).
Raportează numele complete de tipuri în mesajele de eroare, în loc să le trunchieze pe cele lungi.
Eroare când un import cu doar efecte secundare (import "./x.css") nu se rezolvă la nimic.
Permite căi de import terminate în .ts (cere noEmit sau emitDeclarationOnly).