Opcje tsconfig, na których naprawdę zależy, pogrupowane według zadania: zaostrzanie sprawdzania typów, ustawianie targetu językowego i modułów, kontrola tego, co trafia do wyjścia, mapowanie ścieżek importu, struktura buildów wieloprojektowych i dostrajanie pozostałych kontroli.
tsconfig mówi kompilatorowi, które pliki uwzględnić i jak działać rygorystycznie. Dwie opcje wykonują większość pracy: target ustawia poziom generowanego JavaScriptu, a strict włącza cały pakiet kontroli bezpieczeństwa naraz. Poniższe opcje to te, które zmieniają zachowanie; flagi domyślnie włączone są oznaczone. Wyprowadź swoją konfigurację z bazy i nadpisz tylko to, co się różni.
Tabela referencyjna · 55 wpisy
Opcje tsconfigExplained
55 of 55 rows
Ścisłość
Główny przełącznik: włącza strictNullChecks, noImplicitAny i kilka innych naraz.
Błąd dla parametrów i zmiennych, których typu nie da się wywnioskować (inaczej byłyby any).
null i undefined nie są już przypisywalne do każdego typu; musisz wyrazić zgodę jawnie.
Parametry funkcji są sprawdzane kontrawariantnie; wyłapuje błędne typy parametrów w callbackach.
Sprawdza typowo bind, call i apply względem zadeklarowanych parametrów funkcji.
Błąd, gdy pole klasy nie ma wartości początkowej i nie jest przypisywane w konstruktorze.
Opcjonalne pole { p?: T } nie przyjmuje już jawnego przypisania undefined.
Wymaga słowa kluczowego override przy składowych przesłaniających składową klasy bazowej.
Błąd dla zadeklarowanych zmiennych lokalnych, które nigdy nie są odczytywane.
Błąd dla zadeklarowanych parametrów funkcji, które nigdy nie są odczytywane.
Błąd dla instrukcji-wyrażeń bez efektu.
Dostęp przez kropkę jest zabroniony dla kluczy z index signature; użyj nawiasów (obj["key"]).
Błąd, gdy jedna ścieżka kodu zwraca wartość, a inna nie.
Błąd, gdy case w switch przechodzi do następnego bez break.
Język i moduły
Poziom generowanego JavaScriptu (np. ES2022); nowsze targety oznaczają mniej downlevelingu.
Dostępne wbudowane API (np. ES2022, DOM, DOM.Iterable).
System modułów w generowanym kodzie (np. ESNext, CommonJS, NodeNext).
Prawdziwe reguły Node: każdy plik wybiera CJS lub ESM na podstawie najbliższego package.json, a importy względne wymagają rozszerzeń plików.
Sposób rozwiązywania ścieżek importu (np. bundler, node, nodenext).
Kiedy plik liczy się jako moduł: auto (po obecności import/export), legacy lub force (zawsze).
Pozwala na styl importów default z modułów CommonJS (domyślnie true w większości konfiguracji).
Pozwala na importy default z modułów eksportujących tylko nazwane wartości (tylko na poziomie typów).
Importy trafiają do wyjścia dokładnie tak, jak zostały zapisane; importy tylko typów muszą używać import type (TS 5).
Pozwala importom ładować pliki .json jako typowane wartości.
Uwzględnia pliki .js jako wejście kompilacji.
Sprawdza typy także w plikach .js, czytając ich komentarze JSDoc; implikuje allowJs.
Sposób kompilacji .tsx: react-jsx (automatyczny runtime), react (React.createElement) lub preserve.
Ogranicza automatycznie dołączane pakiety @types do tej listy; pusta tablica nie dołącza żadnych.
Katalogi przeszukiwane pod kątem pakietów @types, zamiast wszystkich node_modules/@types w górę drzewa.
Gwarantuje, że każdy plik da się transpilować w izolacji (wymagane przez bundlery i esbuild).
Generowanie kodu
Miejsce zapisu skompilowanego JavaScriptu.
Katalog główny plików źródłowych; utrzymuje stabilny kształt drzewa wyjściowego.
Zapisuje pliki .js.map, żeby debugery mapowały z powrotem na TypeScript.
Osadza source map jako komentarz w pliku .js zamiast osobnego pliku .js.map.
Zapisuje deklaracje typów .d.ts (potrzebne dla bibliotek).
Zapisuje pliki .d.ts.map, żeby edytory przechodziły z deklaracji z powrotem do źródła TypeScript.
Zapisuje tylko pliki .d.ts; JavaScript zostawia bundlerowi (wymaga declaration lub composite).
Ponownie używa helperów typu __rest z tslib, zamiast wstawiać je do każdego pliku.
Poprawne for..of, spread i destrukturyzacja po iterowalnych, gdy target jest starszy niż ES2015.
Usuwa komentarze z generowanego JavaScriptu.
Tylko sprawdzenie typów; bez zapisu plików (używane, gdy generowaniem zajmuje się bundler).
Ścieżki
Katalog bazowy do rozwiązywania importów nierelatywnych.
Mapuje prefiksy importów na położenia, np. { "@/*": ["src/*"] }.
Traktuje kilka katalogów jako jeden wirtualny katalog główny przy rozwiązywaniu.
Struktura projektu
Oznacza projekt jako budowany dla referencji między projektami (włącza declaration, incremental).
Zależność od innych projektów tsconfig dla szybszych, izolowanych buildów.
Zapisuje informacje o buildzie, żeby pominąć niezmienione pliki przy następnym uruchomieniu.
Inne kontrole
Pomija sprawdzanie typów plików .d.ts dla szybkości (domyślnie true).
Błąd dla importów niezgodnych z rzeczywistą wielkością liter w nazwie pliku.
Dostęp przez indeks do tablic zwraca T | undefined, a nie T.
Pola klas powstają przez Object.defineProperty zamiast zwykłego przypisania (domyślnie true dla targetów ES2022+).
Włącza starszą składnię dekoratorów używaną przez starsze frameworki (sprzed standaryzacji).
Zgłasza pełne nazwy typów w komunikatach błędów, zamiast ucinać długie.
Błąd, gdy goły import o efektach ubocznych (import "./x.css") nie rozwiązuje się do niczego.
Pozwala na ścieżki importu kończące się na .ts (wymaga noEmit lub emitDeclarationOnly).