Skip to content

tsconfig-indstillinger forklaret

De tsconfig-indstillinger, der betyder noget, grupperet efter opgave: stram typekontrol, sæt sprogmål og moduler, styr hvad der emits, oversæt importstier, strukturér builds med flere projekter og finjustér de resterende kontroller.

En tsconfig fortæller compileren, hvilke filer den skal medtage, og hvor streng den skal være. To indstillinger klarer det meste: target sætter niveauet for JavaScript-generering, og strict slår sikkerhedskontrollerne til som en pakke. Indstillingerne nedenfor er dem, der ændrer adfærd; flag der er slået til som standard, er noteret. Afled din konfiguration fra en base, og tilsidesæt kun det, der afviger.

Referencetabel · 55 poster
55 of 55 rows
Strenghed
Hovedkontakt: aktiverer strictNullChecks, noImplicitAny og flere andre på én gang.
Fejl ved parametre og variabler, hvis type ikke kan udledes (ville ellers være any).
null og undefined kan ikke længere tildeles alle typer; det skal vælges eksplicit.
Kontrollerer funktionsparametre kontravariant; fanger ikke-typesikre callback-parametertyper.
Typekontrollerer bind, call og apply mod funktionens deklarerede parametre.
Fejl når en klasseegenskab ikke har en startværdi og ikke tildeles i konstruktøren.
En valgfri egenskab { p?: T } accepterer ikke længere en eksplicit tildeling af undefined.
Kræver nøgleordet override på medlemmer, der skygger for et medlem i basisklassen.
Fejl ved deklarerede lokale variabler, der aldrig læses.
Fejl ved deklarerede funktionsparametre, der aldrig læses.
Fejl ved udtrykssætninger uden effekt.
Punktum-adgang er ikke tilladt for nøgler fra en index-signatur; brug klammer (obj["key"]).
Fejl når én kodevej returnerer en værdi, men en anden ikke gør.
Fejl når en switch-case falder igennem til den næste uden break.
Sprog og moduler
Niveauet for JavaScript-generering (fx ES2022); nyere mål betyder mindre nedgradering.
De indbyggede API'er, der er tilgængelige (fx ES2022, DOM, DOM.Iterable).
Det modulsystem, der emits (fx ESNext, CommonJS, NodeNext).
Bruger Nodes rigtige regler: hver fil vælger CJS eller ESM ud fra den nærmeste package.json, og relative imports kræver filendelser.
Hvordan importstier løses (fx bundler, node, nodenext).
Hvornår en fil tæller som et modul: auto (ud fra tilstedeværelse af import/export), legacy eller force (altid).
Tillader default-import-stil fra CommonJS-moduler (som standard true i de fleste setups).
Tillader default-imports fra moduler, der kun eksporterer navngivne værdier (kun på typeniveau).
Imports emits præcis som skrevet; imports af rene typer skal bruge import type (TS 5).
Lader imports indlæse .json-filer som typede værdier.
Medtager .js-filer som input til kompileringen.
Typekontrollerer også .js-filer og læser deres JSDoc-kommentarer; implicerer allowJs.
Hvordan .tsx kompileres: react-jsx (automatisk runtime), react (React.createElement) eller preserve.
Begrænser automatisk medtagne @types-pakker til denne liste; et tomt array medtager ingen.
Mapper der gennemsøges for @types-pakker i stedet for enhver node_modules/@types op ad træet.
Sikrer, at hver fil kan transpileres isoleret (krævet af bundlers og esbuild).
Output
Hvor den kompilerede JavaScript skrives.
Rodmappen for kildefilerne; holder outputtræets form stabil.
Emitter .js.map-filer, så debuggere mapper tilbage til TypeScript.
Indlejrer source mappet som en kommentar i .js-filen i stedet for en .js.map-fil.
Emitter typedeklarationer som .d.ts (nødvendigt til biblioteker).
Emitter .d.ts.map-filer, så editorer hopper fra deklarationer tilbage til TypeScript-kilden.
Emitter kun .d.ts-filer; JavaScript overlades til en bundler (kræver declaration eller composite).
Genbruger hjælpere som __rest fra tslib i stedet for at emitte dem i hver fil.
Korrigerer for..of, spread og destrukturering over iterables, når target ligger før ES2015.
Fjerner kommentarer fra den emittede JavaScript.
Kun typekontrol; skriver ingen filer (bruges når en bundler står for emissionen).
Stier
En basismappe til opløsning af ikke-relative moduler.
Afbilder importpræfikser til placeringer, fx { "@/*": ["src/*"] }.
Behandler flere mapper som én virtuel rod til opløsning.
Projektstruktur
Markerer et projekt som byggbart til projektreferencer (aktiverer declaration, incremental).
Afhænger af andre tsconfig-projekter til hurtigere, isolerede builds.
Gemmer build-info, så uændrede filer springes over ved næste kørsel.
Øvrige kontroller
Springer typekontrol af .d.ts-filer over for hastighedens skyld (som standard true).
Fejl ved imports, der afviger fra filens faktiske brug af store og små bogstaver.
Array- og indeksadgang returnerer T | undefined, ikke T.
Klassefelter oprettes med Object.defineProperty i stedet for simpel tildeling (som standard true for ES2022+-mål).
Aktiverer den ældre decoratorsyntaks, som ældre frameworks bruger (fra før standarden).
Rapporterer fulde typenavne i fejlmeddelelser i stedet for at afkorte de lange.
Fejl når en ren side-effekt-import (import "./x.css") ikke løser til noget.
Tillader importstier, der ender på .ts (kræver noEmit eller emitDeclarationOnly).