TypeScript i tsconfig.json
Ten artykuł wyjaśnia TypeScript i tsconfig.json.
Zaczynając od podstawowej roli TypeScript, wyjaśnimy na konkretnych przykładach, jak tsconfig.json funkcjonuje w projekcie.
YouTube Video
TypeScript i tsconfig.json
TypeScript to „JavaScript z typami”. Jednak aby skutecznie korzystać z TypeScript w prawdziwych projektach, niezbędne jest poprawne zrozumienie oraz świadome skonfigurowanie tsconfig.json.
Dlaczego potrzebujemy TypeScript?
Głównym powodem używania TypeScript jest 'możliwość wykrycia błędów przed uruchomieniem'.
1function add(a: number, b: number): number {
2 return a + b;
3}
4
5add(1, "2");Ten kod nie spowodowałby błędu w JavaScript aż do uruchomienia, natomiast w TypeScript prowadzi do błędu typu podczas kompilacji.
To 'wczesne wykrywanie' znacząco poprawia efektywność i jakość programowania.
Jak wykonywany jest TypeScript?
Z zasady TypeScript nie może być wykonywany bezpośrednio. Musisz przekształcić go na JavaScript za pomocą tsc (TypeScript Compiler)..
1npm install -D typescript
2npx tsc --init- Wykonując tę operację, generowany jest plik
tsconfig.json, stanowiący centralny plik definiujący zachowanie projektu TypeScript.
Jaką rolę pełni plik tsconfig.json?
tsconfig.json to plik konfiguracyjny, który określa 'które pliki', 'według jakich reguł' i 'jak je przekształcić'.. Chociaż na pierwszy rzut oka może się wydawać skomplikowany, tylko kilka ustawień jest naprawdę ważnych.
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ESNext",
5 "strict": true
6 }
7}- Dzięki tym ustawieniom możliwy jest nowoczesny i bezpieczny rozwój w TypeScript.
target: Wersja JavaScript do wygenerowania
target określa poziom specyfikacji generowanego JavaScript.
1"target": "ES2020"Dzięki temu TypeScript wygeneruje kod JavaScript zgodny z ES2020. Dla starszych środowisk wybierz ES5; dla najnowszych środowisk – ES2022 itd.
Przy ustawieniu ESNext
1"target": "ESNext"-
ESNextoznacza, że najnowsza dostępna składnia JavaScript zostanie wygenerowana bez zmian. TypeScript nie transpileruje składni, pozostawiając jej obsługę środowisku uruchomieniowemu, np. Node.js lub przeglądarkom. -
Dlatego
ESNextjest odpowiedni, gdy kierujesz projekt tylko na najnowsze wersje Node.js lub używasz Babel/bundlera do osobnego transpilowania. Z drugiej strony, jeśli środowisko uruchomieniowe nie obsługuje najnowszej składni, może to prowadzić do błędów w czasie wykonywania – należy uważać.
module: Określ format modułu
module określa format modułu.
1"module": "ESNext"ESNextto standard na froncie oraz w nowoczesnych środowiskach Node.js.- Wybierz
"CommonJS"tylko jeśli jest to niezbędne.
strict: Maksymalizuj bezpieczeństwo typów
strict to przełącznik maksymalizujący bezpieczeństwo w TypeScript.
1"strict": true- Włączenie tej opcji pozwoli wychwycić wszelkie niejednoznaczności typów i potencjalne błędy.
tryb strict i niejawny any
Po włączeniu strict, TypeScript traktuje zmienne, których typów nie można wywnioskować, jako błąd.
1function printValue(value) {
2 console.log(value);
3}- Ta zmienna
valuenie ma informacji o typie podczas deklaracji, więc TypeScript nie może określić jej typu. W rezultacie TypeScript używa domyślnie typuany, co w trybiestrictwygeneruje ostrzeżenie (błąd).
1function printValue(value: number) {
2 console.log(value);
3}- Wyraźnie określając typ w ten sposób, TypeScript wie, że „ta zmienna obsługuje tylko liczby”. W TypeScript ważniejsze jest, aby typ mógł zostać jednoznacznie określony, niż by typ mógł być pominięty.
include/exclude: Kontrola nad tym, które pliki będą kompilowane
W pliku tsconfig.json możesz określić które pliki uwzględnić, a które wykluczyć z kompilacji.
1{
2 "include": ["src"],
3 "exclude": ["node_modules"]
4}- W ten sposób tylko pliki znajdujące się w
srcbędą zarządzane przez TypeScript. node_moduleswskazane wexcludenie będą kompilowane, nawet jeśli ich ścieżka znalazła się winclude.
outDir: Określ katalog wyjściowy
Ustaw outDir, aby zarządzać miejscem dla plików wynikowych.
1"outDir": "dist"- Dzięki temu wszystkie wyniki kompilacji trafią do folderu
dist. W praktyce oddzielanie kodu źródłowego od artefaktów kompilacji to standard.
rootDir: Określ katalog źródłowy
rootDir określa katalog traktowany przez TypeScript jako źródłowy.
1"rootDir": "src"-
To ustawienie pozwala TypeScript zachować strukturę katalogów na podstawie
srcpodczas generowania plików. Na przykładsrc/index.tszostanie wygenerowany jakodist/index.js. -
Struktura katalogów określona w
rootDirzostanie odzwierciedlona woutDir.
esModuleInterop: Łączenie CommonJS i ES Modules
Następnie przyjrzyjmy się opcji esModuleInterop.
1"esModuleInterop": true- Jeśli ta opcja jest włączona, można bezpiecznie używać modułów CommonJS z składnią
import.
1import fs from "fs";- To ustawienie jest prawie niezbędne podczas pracy z Node.js.
noImplicitAny: Zakaz niejawnych typów 'any'
Ważne jest także wzmocnienie kontroli typów w tsconfig.json.
1"noImplicitAny": true- Dzięki temu możesz zakazać używania niejawnych typów
any. To umożliwia niezawodne wykrycie miejsc, w których zapomniano określić typ.
Konfiguracja wykrywania nieużywanego kodu
Ustawienia wykrywające nieużywany kod są również pomocne w poprawie łatwości utrzymania projektu.
1"noUnusedLocals": true,
2"noUnusedParameters": true- Dzięki temu zbędne zmienne i argumenty są natychmiast oznaczane ostrzeżeniami.
lib: Określ wbudowane API dostępne do użycia
lib to ustawienie określające standardowe API, których obecność TypeScript zakłada.
1"lib": ["ES2020", "DOM"]- Dzięki temu ustawieniu dostępne stają się następujące typy:.
Dzięki
ES2020, dostępne stają się nowoczesne funkcje, takie jakPromise,MapiSet. DziękiDOMdostępne są API przeglądarkowe, takie jakdocument,windowiHTMLElement.
Na froncie należy uwzględnić DOM; dla projektów tylko Node.js usuń DOM, aby uniknąć niepotrzebnych globalnych typów.
moduleResolution: Reguły wyszukiwania modułów
moduleResolution określa w jaki sposób rozwiązywane są moduły określone w importach.
1"moduleResolution": "Node"Dwie główne opcje to:.
- Jeśli wybierzesz
Node, używane są reguły rozwiązywania modułów Node.js. Classicto starsza, specyficzna dla TypeScript metoda, obecnie rzadko używana.
W środowiskach z Node.js lub bundlerem bezpiecznie jest wyraźnie ustawić Node.
Minimalny, gotowy do produkcji tsconfig.json
Na podstawie powyższych informacji, minimalny, gotowy do produkcji plik tsconfig.json wyglądałby następująco:.
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ESNext",
5 "moduleResolution": "Node",
6 "lib": ["ES2020", "DOM"],
7 "strict": true,
8 "rootDir": "src",
9 "outDir": "dist",
10 "esModuleInterop": true,
11 "noImplicitAny": true,
12 "noUnusedLocals": true,
13 "noUnusedParameters": true
14 },
15 "include": ["src"]
16}Ta konfiguracja stanowi bezpieczną podstawę zarówno dla projektów frontendowych, jak i Node.js.
Podsumowanie: tsconfig.json to 'zbiór reguł'
tsconfig.json to nie tylko plik konfiguracyjny, ale 'zbiór reguł' dla całego projektu. Dzięki tsconfig.json jasno określasz takie zasady jak:.
- Poziom bezpieczeństwa typów.
- Konwencje kodowania dla zespołu.
- Zapobieganie przyszłym błędom.
Dzięki zrozumieniu tsconfig.json będziesz w stanie nie tylko pisać w TypeScript, ale również projektować bezpieczne środowiska TypeScript w swoich projektach.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.