Skip to content

Možnosti tsconfig vysvětleny

Možnosti tsconfig, na kterých záleží, seskupené podle úlohy: zpřísnit kontrolu typů, nastavit jazykovou úroveň a moduly, řídit, co se generuje, mapovat importní cesty, strukturovat buildy více projektů a doladit zbývající kontroly.

Soubor tsconfig říká kompilátoru, které soubory zahrnout a jak být přísný. Většinu práce odvedou dvě možnosti: target nastavuje úroveň generovaného JavaScriptu a strict zapíná bezpečnostní kontroly jako balík. Níže jsou možnosti, které mění chování; výchozí zapnuté přepínače jsou poznamenané. Odvoďte konfiguraci ze základu a přepište jen to, co se liší.

Referenční tabulka · 55 položek
55 of 55 rows
Přísnost
Hlavní vypínač: najednou zapíná strictNullChecks, noImplicitAny a několik dalších.
Chyba u parametrů a proměnných, jejichž typ nelze odvodit (jinak by byly any).
null a undefined už nejsou přiřaditelné každému typu; musíte to povolit explicitně.
Kontroluje parametry funkcí kontravariantně; odhalí unsound typy parametrů callbacků.
Typově kontroluje bind, call a apply proti deklarovaným parametrům funkce.
Chyba, když vlastnost třídy nemá počáteční hodnotu a v konstruktoru se jí nepřiřazuje.
Volitelná vlastnost { p?: T } už nepřijímá explicitní přiřazení undefined.
Vyžaduje klíčové slovo override u členů, které zastíní člena základní třídy.
Chyba u deklarovaných lokálních proměnných, které se nikdy nečtou.
Chyba u deklarovaných parametrů funkcí, které se nikdy nečtou.
Chyba u výrazových příkazů bez efektu.
Tečkový přístup není povolen pro klíče index signatur; použijte hranaté závorky (obj["key"]).
Chyba, když jedna cesta kódu vrací hodnotu a jiná ne.
Chyba, když case ve switch propadne do dalšího bez break.
Jazyk a moduly
Úroveň generování JavaScriptu (např. ES2022); novější cíle znamenají méně downlevelingu.
Vestavěná API, která jsou k dispozici (např. ES2022, DOM, DOM.Iterable).
Generovaný modulový systém (např. ESNext, CommonJS, NodeNext).
Používá skutečná pravidla Node: každý soubor si vybere CJS nebo ESM podle nejbližšího package.json a relativní importy potřebují přípony souborů.
Jak se řeší importní cesty (např. bundler, node, nodenext).
Kdy se soubor počítá jako modul: auto (podle přítomnosti import/export), legacy nebo force (vždy).
Umožňuje styl výchozího importu z modulů CommonJS (ve většině nastavení výchozí true).
Umožňuje výchozí importy z modulů, které exportují jen pojmenované hodnoty (pouze na úrovni typů).
Importy se generují přesně tak, jak jsou napsány; importy pouze typů musí používat import type (TS 5).
Umožňuje importům načítat soubory .json jako typované hodnoty.
Zahrne soubory .js jako vstup kompilace.
Typově kontroluje i soubory .js a čte jejich JSDoc komentáře; implikuje allowJs.
Jak se kompiluje .tsx: react-jsx (automatický runtime), react (React.createElement) nebo preserve.
Omezí automaticky zahrnuté balíčky @types na tento seznam; prázdné pole nezahrnuje žádný.
Složky prohledávané na balíčky @types místo každého node_modules/@types ve stromu.
Zajišťuje, že každý soubor lze transpilovat izolovaně (vyžadují ho bundlery a esbuild).
Výstup
Kam se zapisuje zkompilovaný JavaScript.
Kořen zdrojových souborů; drží tvar výstupního stromu stabilní.
Generuje soubory .js.map, aby ladicí nástroje mapovaly zpět na TypeScript.
Vkládá source map jako komentář do souboru .js místo samostatného souboru .js.map.
Generuje typové deklarace .d.ts (potřebné pro knihovny).
Generuje soubory .d.ts.map, aby editory skákaly z deklarací zpět do zdroje TypeScript.
Generuje jen soubory .d.ts; JavaScript ponechá bundleru (vyžaduje declaration nebo composite).
Znovu používá pomocníky jako __rest z tslib místo generování do každého souboru.
Opravuje for..of, spread a destrukturalizaci nad iterovatelnými, když target předchází ES2015.
Odstraňuje komentáře z generovaného JavaScriptu.
Pouze kontrola typů; nezapisuje soubory (používá se, když emisi dělá bundler).
Cesty
Základní adresář pro řešení ne-relativních modulů.
Mapuje prefixy importů na umístění, např. { "@/*": ["src/*"] }.
Považuje několik adresářů za jeden virtuální kořen pro řešení.
Struktura projektu
Označí projekt jako sestavitelný pro projektové reference (zapíná declaration, incremental).
Závisí na jiných projektech tsconfig pro rychlejší, izolované buildy.
Ukládá informace o buildu, aby příští běh přeskočil nezměněné soubory.
Ostatní kontroly
Přeskočí kontrolu typů souborů .d.ts kvůli rychlosti (výchozí true).
Chyba u importů, jejichž velikost písmen nesouhlasí se skutečným názvem souboru.
Přístup k polím a indexům vrací T | undefined, nikoli T.
Pole tříd se vytvářejí přes Object.defineProperty místo prostého přiřazení (výchozí true pro cíle ES2022+).
Zapíná starší syntaxi dekorátorů používanou staršími frameworky (předstandardní).
Hlásí celé názvy typů v chybových zprávách místo zkracování dlouhých.
Chyba, když čistě vedlejší import (import "./x.css") nic nevyřeší.
Povoluje importní cesty končící na .ts (vyžaduje noEmit nebo emitDeclarationOnly).