Tytuł Programowanie w TypeScript Podtytuł Tworzenie skalowalnych aplikacji w JavaScript Autor Boris Cherny Język polski Wydawnictwo Wydawnictwo Naukowe PWN Tłumaczenie Natalia Chounlamany-Turalska ISBN 978-83-01-21122-6 Rok wydania 2020 Wydanie 1 liczba stron 350 Format epub, mobi Spis treści Przedmowa XI 1. Wprowadzenie 1 2. TypeScript: Ogólny obraz 5 Kompilator 5 System typów 7 TypeScript versus JavaScript 8 Przygotowanie edytora kodu 11 tsconfig.json 11 tslint.json 13 index.ts 13 Ćwiczenia 14 3. Cała prawda o typach 17 Omawianie typów 18 Abecadło typów 19 any 19 unknown 20 boolean 21 number 22 bigint 23 string 23 symbol 24 Obiekty 25 Przerwa: aliasy, unie i przecięcia typów 30 Tablice 33 typeScript.indb 5 08.04.2020 12:22:24 Krotki 35 null, undefined, void i never 37 enum 39 Podsumowanie 43 Ćwiczenia 44 4. Funkcje 45 Deklarowanie i wywoływanie funkcji 45 właściwości opcjonalne i domyślne 47 właściwości reszty 48 call, apply oraz bind 50 rodzaj zmiennej this 50 Funkcje generatora 52 Iteratory 53 Sygnatury wywołań 55 Wnioskowanie typów z kontekstu 57 Przeciążone typy funkcji 58 Polimorfizm 64 Kiedy wiązane są typy ogólne? 68 Gdzie można deklarować typy ogólne? 69 Wnioskowanie rodzaju ogólnego 71 Aliasy typów ogólnych 72 Ograniczony polimorfizm 74 Domyślne typy ogólne 77 Programowanie sterowane typami 79 Podsumowanie 80 Ćwiczenia 80 5. Klasy i interfejsy 81 Klasy i dziedziczenie 81 super 86 użytkowanie this jako zwracanego rodzaju 87 Interfejsy 88 Scalanie deklaracji 90 Implementacje 91 Implementowanie interfejsów a rozszerzanie klas abstrakcyjnych 93 Klasy są charakterystycznane strukturalnie 94 Klasy deklarują zarówno wartości, jak i typy 95 Polimorfizm 97 Domieszki 98 Dekoratory 101 Symulowanie klas rodzaju final 103 Wzorce projektowe 104 typeScript.indb 6 08.04.2020 12:22:24 Wzorzec Fabryka 104 Wzorzec Budowniczy 105 Podsumowanie 107 Ćwiczenia 107 6. Typy innowacyjne 109 Relacje między typami 109 Typy podrzędne i nadrzędne 110 Wariancja 111 Zasady przypisywalności 117 zwiększanie typów 118 Uściślanie 122 Kompletność 126 progresywne typy obiektów 127 Operatory na typach obiektów 128 wariant Record 132 Typy mapowane 133 Wzorzec obiektu towarzyszącego 135 zaawansowane typy funkcji 136 udoskonalanie wnioskowania typów dla krotek 136 Dozory typów definiowane poprzez użytkownika 137 Typy warunkowe 138 Rozdzielne warunki 139 Słowo kluczowe infer 140 wbudowane typy warunkowe 141 Drogi ewakuacyjne 142 Asercje typów 143 Asercje wykluczające null 144 Asercje pewnego przypisania 146 Symulowanie typów nominalnych 147 Bezpieczne powiększanie prototypu 149 Podsumowanie 151 Ćwiczenia 151 7. Obsługa błędów 153 Zwracanie wartości null 154 Zgłaszanie wyjątków 155 Zwracanie wyjątków 157 wariant Option 159 Podsumowanie 165 Ćwiczenia 165 8. Programowanie asynchroniczne, współbieżność i równoległość 167 Pętla zdarzeń JavaScriptu 168 używanie wywołań zwrotnych 170 Przywracanie porządku przy użyciu obietnic 172 async i await 176 Strumienie asynchroniczne 177 Emitery zdarzeń 178 Wielowątkowość z zachowaniem bezpieczeństwa typów 181 W przeglądarce: przy użyciu Web Workers 181 W NodeJS: z procesami podrzędnymi 189 Podsumowanie 190 Ćwiczenia 191 9. Frameworki front-end i back-end 193 Frameworki front-end 193 React 195 Angular 201 API gwarantujące bezpieczeństwo typów 204 Frameworki back-end 205 Podsumowanie 207 10. Przestrzenie nazw. Moduły 209 Krótka historia modułów JavaScriptu 210 import, eksport 212 Dynamiczne importy 213 stosowanie kodu CommonJS i AMD 215 Tryb modułu a tryb skryptu 216 Przestrzenie nazw 216 Kolizje 219 Wynik kompozycji 219 Scalanie deklaracji 220 Podsumowanie 222 Ćwiczenie 222 11. Współdziałanie z językiem JavaScript 223 Deklaracje typów 224 Otaczające deklaracje zmiennych 227 Otaczające deklaracje typów 228 Otaczające deklaracje modułów 229 Stopniowa migracja z JavaScriptu do TypeScriptu 230 Krok 1: Dodanie TSC 231 Krok 2a: Włączenie sprawdzania typów dla JavaScriptu (opcjonalnie) 231 Krok 2b: Dodanie adnotacji JSDoc (opcjonalnie) 233 Krok 3: Zmienianie nazw plików na.ts 234 Krok 4: Włączenie ścisłej kontroli typów 235 Wyszukiwanie typów dla JavaScriptu 235 stosowanie zewnętrznego kodu JavaScriptu 238 JavaScript, który mieści deklaracje typów 238 JavaScript, który ma deklaracje typów w DefinitelyTyped 238 JavaScript, który nie ma deklaracji typów na DefinitelyTyped 239 Podsumowanie 240 12. Budowanie i uruchamianie TypeScriptu 243 Budowanie projektu TypeScript 243 Układ projektu 243 Artefakty 244 Ustawianie środowiska docelowego kompozycji 245 Włączanie map źródeł 249 Odwołania projektów 249 Monitorowanie błędów 252 realizowanie TypeScriptu na serwerze 252 realizowanie TypeScriptu w przeglądarce 253 Publikowanie kodu TypeScript w NPM 254 Dyrektywy z trzema ukośnikami 256 Dyrektywa types 256 Dyrektywa amd-module 257 Podsumowanie 258 13. Wnioski 259 A. Operatory na typach 261 B. Typy pomocnicze 263 C. Deklaracje w zakresie 265 D. Wskazówki do pisania plików deklaracji dla zewnętrznych modułów JavaScriptu 267 E. Dyrektywy z potrójnym ukośnikiem 275 F. Flagi kompilatora TSC podnoszące bezpieczeństwo 277 G. TSX 279 Indeks 282 O autorze 295