Lekcje modułu (1/2)
Konfiguracja z tsconfig.json
Plik tsconfig.json definiuje katalog główny projektu TypeScript i określa opcje kompilacji wymagane do skompilowania projektu.
Po uruchomieniu polecenia tsc w katalogu projektu kompilator wyszukuje ten plik, aby określić swoje zachowanie.
Struktura pliku tsconfig.json
Typowy plik konfiguracji wygląda następująco:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Główne klucze to:
compilerOptions: Ustawienia kompilatora.include: Pliki lub katalogi, które powinny zostać skompilowane.exclude: Pliki lub katalogi do zignorowania podczas kompilacji.
Kluczowe opcje kompilatora
Oto najważniejsze opcje, które warto znać:
target: Określa wersję JavaScript generowaną na wyjściu (np.es5,es6/es2015,es2020,esnext).module: Określa system modułów, który ma być używany w plikach wyjściowych (np.commonjs,esnext,node16).strict: Włącza szeroką gamę rygorystycznych kontroli typów. Zdecydowanie zaleca się ustawienie tej opcji natruew celu maksymalizacji bezpieczeństwa kodu. Włącza ona opcje takie jak:noImplicitAny: Generuje błąd, jeśli brakuje adnotacji typu dla parametrów, które w przeciwnym razie zostałyby wydedukowane jakoany.strictNullChecks: Zapobiega przypisywaniu wartościnulllubundefineddo typów, które nie przewidują ich jawnie w swojej unii.
Spróbuj sam
Ćwiczenie 1: Obsługa strictNullChecks
Przy włączonej opcji strictNullChecks: true w pliku tsconfig.json nie możemy przypisywać null ani undefined do typów prostych. Zadeklaruj funkcję o nazwie parseAge, która przyjmuje wejście typu string | null i zwraca number, jeśli wejście nie jest nullem i jest poprawną liczbą całkowitą, w przeciwnym razie zwraca 0. Obsłuż jawnie przypadek null, aby przejść rygorystyczną kompilację.
Pokaż wskazówkę
Sprawdź, czy input jest równy null na początku funkcji i natychmiast zwróć 0 przed przetworzeniem ciągu znaków.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie 2: Rygorystyczne typowanie bez Implicit Any
Przy włączonej opcji noImplicitAny: true, każdy parametr, którego typu nie można wydedukować, musi być jawnie otypowany. Utwórz funkcję o nazwie processItems, która przyjmuje tablicę items (tablica liczb) oraz funkcję wywołania zwrotnego (callback), która przyjmuje pojedynczą liczbę jako argument i nic nie zwraca. Upewnij się, że nie używasz any i typujesz wszystko jawnie.
Pokaż wskazówkę
Zadeklaruj funkcję z sygnaturą function processItems(items: number[], callback: (item: number) => void): void.
Rozwiązanie dostępne po 3 próbach