Skip to content

tsconfig-opties uitgelegd

De tsconfig-opties die ertoe doen, gegroepeerd per taak: typecontrole aanscherpen, taaltarget en modules instellen, bepalen wat er wordt gegenereerd, importpaden mappen, builds met meerdere projecten structureren en de overige controles afstemmen.

Een tsconfig vertelt de compiler welke bestanden moeten worden meegenomen en hoe streng gecontroleerd moet worden. Twee opties doen het meeste werk: target stelt het JavaScript-generatieniveau in, en strict zet de veiligheidscontroles als één pakket aan. De opties hieronder zijn degene die gedrag wijzigen; standaard aangezette vlaggen zijn aangegeven. Leid je configuratie af van een basis en overschrijf alleen wat afwijkt.

Referentietabel · 55 items
55 of 55 rows
Striktheid
Hoofdschakelaar: zet strictNullChecks, noImplicitAny en verschillende anderen tegelijk aan.
Fout bij parameters en variabelen waarvan het type niet kan worden afgeleid (zou anders any worden).
null en undefined zijn niet langer aan elk type toe te kennen; je kiest er expliciet voor.
Controleer functieparameters contravariant; vangt onjuiste callback-parametertypes af.
Type-check bind, call en apply tegen de gedeclareerde parameters van de functie.
Fout wanneer een klasse-eigenschap geen beginwaarde heeft en niet in de constructor wordt toegewezen.
Een optionele eigenschap { p?: T } accepteert geen expliciete toewijzing van undefined meer.
Vereist het sleutelwoord override op leden die een lid van de basisklasse overschaduwen.
Fout bij gedeclareerde lokale variabelen die nooit worden gelezen.
Fout bij gedeclareerde functieparameters die nooit worden gelezen.
Fout bij expressie-statements zonder effect.
Punttoegang is niet toegestaan voor sleutels uit een index signature; gebruik blokhaken (obj["key"]).
Fout wanneer het ene codepad een waarde retourneert en het andere niet.
Fout wanneer een switch-case doorvalt naar de volgende zonder break.
Taal en modules
Het JavaScript-generatieniveau (bijv. ES2022); nieuwere targets geven minder downleveling.
De ingebouwde API's die beschikbaar zijn (bijv. ES2022, DOM, DOM.Iterable).
Het modulesysteem in de gegenereerde code (bijv. ESNext, CommonJS, NodeNext).
Volgt de echte regels van Node: elk bestand kiest CJS of ESM op basis van de dichtstbijzijnde package.json, en relatieve imports hebben bestandsextensies nodig.
Hoe importpaden worden opgelost (bijv. bundler, node, nodenext).
Wanneer een bestand als module telt: auto (op aanwezigheid van import/export), legacy of force (altijd).
Sta default-import-stijl toe vanuit CommonJS-modules (standaard true bij de meeste setups).
Sta default-imports toe vanuit modules die alleen benoemde waarden exporteren (alleen op typniveau).
Imports worden precies zoals geschreven gegenereerd; type-only imports moeten import type gebruiken (TS 5).
Laat imports .json-bestanden laden als getypeerde waarden.
Neem .js-bestanden op als invoer voor de compilatie.
Type-check ook .js-bestanden en lees hun JSDoc-commentaren; impliceert allowJs.
Hoe .tsx wordt gecompileerd: react-jsx (automatische runtime), react (React.createElement) of preserve.
Beperk automatisch opgenomen @types-pakketten tot deze lijst; een lege array sluit alles uit.
Mappen die worden doorzocht op @types-pakketten, in plaats van elke node_modules/@types hoger in de boom.
Zorg dat elk bestand geïsoleerd kan worden getranspileerd (vereist door bundlers en esbuild).
Uitvoer
Waar de gecompileerde JavaScript wordt weggeschreven.
De root van de bronbestanden; houdt de vorm van de uitvoerboom stabiel.
Schrijf .js.map-bestanden zodat debuggers terugkoppelen naar TypeScript.
Sluit de source map in als commentaar in het .js-bestand, in plaats van een los .js.map-bestand.
Genereer typedefinities als .d.ts (nodig voor bibliotheken).
Genereer .d.ts.map-bestanden zodat editors van declaraties terugspringen naar de TypeScript-bron.
Genereer alleen .d.ts-bestanden; de JavaScript blijft over aan een bundler (vereist declaration of composite).
Hergebruik helpers zoals __rest uit tslib, in plaats van ze in elk bestand te genereren.
Correcte for..of, spread en destructuring over iterables wanneer target ouder is dan ES2015.
Verwijder commentaren uit de gegenereerde JavaScript.
Alleen type-checken; geen bestanden schrijven (gebruikt wanneer een bundler voor de uitvoer zorgt).
Paden
Een basismap voor het oplossen van niet-relatieve modules.
Map importprefixen naar locaties, bijv. { "@/*": ["src/*"] }.
Behandel meerdere mappen als één virtuele root bij het oplossen.
Projectstructuur
Markeer een project als bouwbaar voor projectreferenties (zet declaration en incremental aan).
Afhankelijk zijn van andere tsconfig-projecten voor snellere, geïsoleerde builds.
Sla build-informatie op om bij de volgende run ongewijzigde bestanden over te slaan.
Overige controles
Sla typecontrole van .d.ts-bestanden over voor snelheid (standaard true).
Fout bij imports die niet overeenkomen met de werkelijke hoofd- en kleine letters van de bestandsnaam.
Array- en indextoegang geeft T | undefined terug, niet T.
Klassevelden worden aangemaakt met Object.defineProperty in plaats van gewone toewijzing (standaard true voor ES2022+-targets).
Zet de verouderde decoratorsyntaxis aan die oudere frameworks gebruiken (van vóór de standaard).
Rapporteer volledige typnamen in foutmeldingen, in plaats van lange af te kappen.
Fout wanneer een kale side-effect import (import "./x.css") nergens naartoe resolveert.
Sta importpaden toe die op .ts eindigen (vereist noEmit of emitDeclarationOnly).