TypeScript na warsztacie. Praktyczny przewodnik pisania efektywnego kodu - ebook
TypeScript na warsztacie. Praktyczny przewodnik pisania efektywnego kodu - ebook
TypeScript szybko stał się ulubionym językiem programowania zawodowców. Pozwala na tworzenie czystego, efektywnego i łatwego w utrzymaniu kodu, a także zastosowanie zaawansowanych konstrukcji programistycznych. Co więcej, pracę w tym języku uprzyjemniają liczne frameworki i biblioteki, które pozwalają na sprawną budowę dojrzałych aplikacji. Jednak z punktu widzenia początkującego programisty TypeScript ma inną ogromną zaletę: jest świetnym punktem startu dla każdego, kto chce pisać czytelny, łatwy do zrozumienia i mniej podatny na błędy kod.
Dzięki tej książce Twoja nauka programowania w TypeScripcie przebiegnie w maksymalnie sprawny i efektywny sposób. Położono w niej nacisk na praktykę, a objaśnienia teoretyczne ograniczono do faktycznie ważnych i przydatnych zagadnień, które ułatwią ugruntowanie najlepszych podstaw programowania. W licznych ćwiczeniach pokazano, jak stosować kluczowe koncepcje w aplikacjach produkcyjnych, używanych w rzeczywistości. Każdy rozdział kończy się zadaniem do samodzielnego wykonania, opracowanym tak, by umożliwić wypróbowanie poznanych treści w praktyce. Jeśli chcesz pisać kod w TypeScripcie na profesjonalnym poziomie, a równocześnie odczuwasz onieśmielenie na myśl o nauce nowego języka, dzięki temu podręcznikowi szybko osiągniesz swój cel!
W książce między innymi:
- gruntowne podstawy języka TypeScript i pliki deklaracji
- funkcje, klasy i obiekty w TypeScripcie
- wstrzykiwanie zależności i zachowania asynchroniczne
- obietnice i programowanie asynchroniczne
- biblioteka React i jej zastosowanie
TypeScript: sprawdź, czy umiesz napisać lepszy kod!
Spis treści
Wstęp
Rozdział 1. Podstawy TypeScriptu
- Wprowadzenie
- Ewolucja TypeScriptu
- Cele projektowe TypeScriptu
- Pierwsze kroki z TypeScriptem
- Kompilator TypeScriptu
- Konfigurowanie projektu TypeScriptu
- Ćwiczenie 1.01. Użycie pliku tsconfig.json i pierwsze kroki z TypeScriptem
- Typy i ich zastosowanie
- TypeScript i funkcje
- Ćwiczenie 1.02. Praca z funkcjami w TypeScripcie
- TypeScript i obiekty
- Ćwiczenie 1.03. Praca z obiektami
- Typy proste
- Ćwiczenie 1.04. Operator typeof
- Łańcuchy znaków
- Liczby
- Typy logiczne (boolowskie)
- Tablice
- Krotki
- Ćwiczenie 1.05. Stosowanie tablic i krotek do wydajnego sortowania obiektów
- Typy wyliczeniowe
- Typy any i unknown
- Wartości null i undefined
- Typ never
- Typy funkcji
- Tworzenie własnych typów
- Ćwiczenie 1.06. Tworzenie funkcji kalkulatora
- Zadanie 1.01. Tworzenie biblioteki do pracy z łańcuchami znaków
- Podsumowanie
Rozdział 2. Pliki deklaracji
- Wprowadzenie
- Pliki deklaracji
- Ćwiczenie 2.01. Tworzenie pliku deklaracji od podstaw
- Wyjątki
- Zewnętrzne biblioteki kodów
- Biblioteka DefinitelyTyped
- Analiza zewnętrznego pliku deklaracji
- Ćwiczenie 2.02. Tworzenie typów z wykorzystaniem zewnętrznych bibliotek
- Programistyczny przepływ pracy dla DefinitelyTyped
- Ćwiczenie 2.03. Tworzenie aplikacji baseballowej karty składu
- Zadanie 2.01. Tworzenie pliku deklaracji mapy cieplnej
- Podsumowanie
Rozdział 3. Funkcje
- Wprowadzenie
- Funkcje w TypeScripcie
- Ćwiczenie 3.01. Pierwsze kroki z funkcjami w TypeScripcie
- Słowo kluczowe function
- Parametry funkcji
- Argument a parametr
- Parametry opcjonalne
- Parametry domyślne
- Wiele argumentów
- Parametry reszty
- Destrukturyzacja typów zwracanych
- Konstruktor funkcji
- Ćwiczenie 3.02. Porównywanie tablic liczb
- Wyrażenia funkcyjne
- Funkcje strzałkowe
- Inferencja typów
- Ćwiczenie 3.03. Pisanie funkcji strzałkowych
- Słowo kluczowe this
- Ćwiczenie 3.04. Stosowanie this w obiekcie
- Domknięcia i zakres
- Ćwiczenie 3.05. Tworzenie metody wytwórczej zamówień z wykorzystaniem domknięć
- Rozwijanie funkcji
- Ćwiczenie 3.06. Refaktoryzacja do postaci funkcji rozwijanych
- Programowanie funkcyjne
- Organizowanie funkcji w obiekty i klasy
- Ćwiczenie 3.07. Refaktoryzacja kodu JavaScript do TypeScriptu
- Słowa kluczowe import, export i require
- Ćwiczenie 3.08. Importowanie i eksportowanie
- Zadanie 3.01. Budowanie systemu rezerwacji lotów z wykorzystaniem funkcji
- Wykonywanie testów jednostkowych za pomocą ts-jest
- Zadanie 3.02. Pisanie testów jednostkowych
- Obsługa błędów
- Podsumowanie
Rozdział 4. Klasy i obiekty
- Wprowadzenie
- Czym są klasy i obiekty?
- Ćwiczenie 4.01. Budowanie pierwszej klasy
- Rozszerzanie zachowania klasy za pomocą konstruktora
- Słowo kluczowe this
- Ćwiczenie 4.02. Definiowanie atrybutów klasy i uzyskiwanie do nich dostępu
- Ćwiczenie 4.03. Integrowanie typów z klasami
- Interfejsy TypeScriptu
- Ćwiczenie 4.04. Budowanie interfejsu
- Generowanie kodu HTML w metodach
- Ćwiczenie 4.05. Generowanie i przeglądanie kodu HTML
- Praca z wieloma klasami i obiektami
- Ćwiczenie 4.06. Łączenie klas
- Zadanie 4.01. Tworzenie modelu użytkownika za pomocą klas, obiektów i interfejsów
- Podsumowanie
Rozdział 5. Interfejsy i dziedziczenie
- Wprowadzenie
- Interfejsy
- Studium przypadku: pisanie pierwszego interfejsu
- Ćwiczenie 5.01. Implementacja interfejsów
- Ćwiczenie 5.02. Implementacja interfejsów - tworzenie prototypowej aplikacji blogowej
- Ćwiczenie 5.03. Tworzenie interfejsów dla funkcji aktualizacji bazy danych użytkownika
- Zadanie 5.01. Budowanie komponentu zarządzania użytkownikami za pomocą interfejsów
- Dziedziczenie w TypeScripcie
- Ćwiczenie 5.04. Tworzenie klasy bazowej i dwóch rozszerzonych klas potomnych
- Ćwiczenie 5.05. Tworzenie klas bazowych i rozszerzonych przy użyciu dziedziczenia wielopoziomowego
- Zadanie 5.02. Tworzenie prototypowej aplikacji internetowej dla salonu samochodowego przy użyciu dziedziczenia
- Podsumowanie
Rozdział 6. Typy zaawansowane
- Wprowadzenie
- Aliasy typów
- Ćwiczenie 6.01. Implementowanie aliasów typów
- Literały typów
- Ćwiczenie 6.02. Literały typów
- Typy części wspólnej
- Ćwiczenie 6.03. Tworzenie typów części wspólnej
- Typy unii
- Ćwiczenie 6.04. Aktualizowanie zapasów produktów za pomocą interfejsu API
- Typy indeksowe
- Ćwiczenie 6.05. Wyświetlanie komunikatów o błędach
- Zadanie 6.01. Typ części wspólnej
- Zadanie 6.02. Typ unii
- Zadanie 6.03. Typ indeksowy
- Podsumowanie
Rozdział 7. Dekoratory
- Wprowadzenie
- Refleksja
- Konfigurowanie opcji kompilatora
- Znaczenie dekoratorów
- Problem zagadnień przekrojowych
- Dekoratory i metody wytwórcze dekoratorów
- Składnia dekoratorów
- Metody wytwórcze dekoratorów
- Dekoratory klas
- Wstrzykiwanie właściwości
- Ćwiczenie 7.01. Tworzenie prostej metody wytwórczej dekoratora klas
- Rozszerzenie konstruktora
- Ćwiczenie 7.02. Użycie dekoratora rozszerzeń konstruktora
- Opakowywanie konstruktora
- Ćwiczenie 7.03. Tworzenie dekoratora rejestrowania dla klasy
- Dekoratory metod i akcesorów
- Dekoratory funkcji instancji
- Ćwiczenie 7.04. Tworzenie dekoratora, który oznacza funkcję jako wyliczalną
- Dekoratory funkcji statycznych
- Dekoratory opakowywania metod
- Ćwiczenie 7.05. Tworzenie dekoratora rejestrowania dla metody
- Zadanie 7.01. Tworzenie dekoratorów do liczenia wywołań
- Stosowanie metadanych w dekoratorach
- Obiekt Reflect
- Ćwiczenie 7.06. Dodawanie metadanych do metod za pomocą dekoratorów
- Dekoratory właściwości
- Ćwiczenie 7.07. Tworzenie i stosowanie dekoratora właściwości
- Dekoratory parametrów
- Ćwiczenie 7.08. Tworzenie i stosowanie dekoratora parametrów
- Zastosowanie wielu dekoratorów do pojedynczego elementu docelowego
- Zadanie 7.02. Stosowanie dekoratorów w celu dodania zagadnień przekrojowych
- Podsumowanie
Rozdział 8. Wstrzykiwanie zależności w TypeScripcie
- Wprowadzenie
- Wzorzec projektowy DI
- DI we frameworku Angular
- Ćwiczenie 8.01. Dodawanie przechwytywacza HttpInterceptor do aplikacji Angulara
- DI we frameworku Nest.js
- Biblioteka InversifyJS
- Ćwiczenie 8.02. Tworzenie aplikacji "Witaj, świecie" z wykorzystaniem InversifyJS
- Zadanie 8.01. Kalkulator oparty na DI
- Podsumowanie
Rozdział 9. Typy sparametryzowane i warunkowe
- Wprowadzenie
- Typy sparametryzowane
- Interfejsy sparametryzowane
- Typy sparametryzowane
- Klasy sparametryzowane
- Ćwiczenie 9.01. Klasa sparametryzowana Set
- Funkcje sparametryzowane
- Ograniczenia typów sparametryzowanych
- Ćwiczenie 9.02. Funkcja sparametryzowana memoize
- Wartości domyślne typów sparametryzowanych
- Typy warunkowe
- Zadanie 9.01. Tworzenie typu DeepPartial<T>
- Podsumowanie
Rozdział 10. Pętle zdarzeń i zachowania asynchroniczne
- Wprowadzenie
- Podejście wielowątkowe
- Wykonywanie asynchroniczne
- Wykonywanie kodu JavaScript
- Ćwiczenie 10.01. Układanie funkcji w stos
- Przeglądarki i JavaScript
- Zdarzenia w przeglądarce
- Interfejsy API środowiska
- Metoda setTimeout
- Ćwiczenie 10.02. Korzystanie z setTimeout
- AJAX (asynchroniczny JavaScript i XML)
- Zadanie 10.01. Przeglądarka filmów wykorzystująca obiekt xhr i wywołania zwrotne
- Obietnice
- Ćwiczenie 10.03. Liczenie do 5
- Czym są obietnice?
- Ćwiczenie 10.04. Liczenie do 5 za pomocą obietnic
- Zadanie 10.02. Przeglądarka filmów wykorzystująca API fetch i obietnice
- Funkcjonalność async/await
- Ćwiczenie 10.05. Liczenie do 5 z wykorzystaniem async i await
- Zadanie 10.03. Przeglądarka filmów wykorzystująca API fetch i funkcjonalność async/await
- Podsumowanie
Rozdział 11. Funkcje wyższego rzędu i wywołania zwrotne
- Wprowadzenie
- Wprowadzenie do funkcji HOC - przykłady
- Funkcje wyższego rzędu
- Ćwiczenie 11.01. Stosowanie funkcji wyższego rzędu do organizowania filtrowania danych i operowania na nich
- Wywołania zwrotne
- Pętla zdarzeń
- Wywołania zwrotne w Node.js
- Piekło wywołań zwrotnych
- Unikanie piekła wywołań zwrotnych
- Wyodrębnienie procedur obsługi wywołań zwrotnych do deklaracji funkcji na poziomie pliku
- Łączenie wywołań zwrotnych w łańcuch
- Obietnice
- Funkcjonalność async/await
- Zadanie 11.01. Funkcja wyższego rzędu pipe
- Podsumowanie
Rozdział 12. Przewodnik po obietnicach w TypeScripcie
- Wprowadzenie
- Ewolucja i powody wprowadzenia obietnic
- Anatomia obietnic
- Wywołanie zwrotne obietnicy
- Metody then i catch
- Stan pending
- Stan fulfilled
- Stan rejected
- Łączenie w łańcuch
- Ćwiczenie 12.01. Łączenie w łańcuch obietnic
- Metoda finally
- Metoda Promise.all
- Ćwiczenie 12.02. Rekurencyjna metoda Promise.all
- Metoda Promise.allSettled
- Ćwiczenie 12.03. Promise.allSettled
- Metoda Promise.any
- Metoda Promise.race
- Ulepszanie obietnic za pomocą typów
- Ćwiczenie 12.04. Renderowanie asynchroniczne
- Biblioteki i natywne obietnice - zewnętrzne biblioteki, Q i Bluebird
- Wypełnienia obietnic
- Promisyfikacja
- Funkcjonalność util.promisify frameworku Node.js
- Asynchroniczny system plików
- Metoda fs.readFile
- Metoda fs.readFileSync
- API obietnic biblioteki fs
- Ćwiczenie 12.05. API obietnic biblioteki fs
- Praca z bazami danych
- Programowanie z wykorzystaniem API RESTful
- Ćwiczenie 12.06. Implementowanie API RESTful wspieranego przez sqlite
- Połączenie wszystkich elementów w celu zbudowania aplikacji korzystającej z obietnic
- Zadanie 12.01. Budowanie aplikacji korzystającej z obietnic
- Podsumowanie
Rozdział 13. Funkcjonalność async/await w TypeScripcie
- Wprowadzenie
- Ewolucja i powody wprowadzenia async/await
- Funkcjonalność async/await w TypeScripcie
- Ćwiczenie 13.01. Środowiska docelowe transpilacji
- Wybór środowiska docelowego
- Składnia
- Słowo kluczowe async
- Ćwiczenie 13.02. Słowo kluczowe async
- Ćwiczenie 13.03. Rozwiązywanie funkcji async za pomocą then
- Słowo kluczowe await
- Ćwiczenie 13.04. Słowo kluczowe await
- Ćwiczenie 13.05. Oczekiwanie na obietnicę
- Lukier składniowy
- Obsługa wyjątków
- Ćwiczenie 13.06. Obsługa wyjątków
- Funkcjonalność await najwyższego poziomu
- Metody obiektu Promise
- Ćwiczenie 13.07. async/await we frameworku Express.js
- Ćwiczenie 13.08. NestJS
- Ćwiczenie 13.09. TypeORM
- Zadanie 13.01. Użycie await do refaktoryzacji łańcucha obietnic
- Podsumowanie
Rozdział 14. TypeScript i biblioteka React
- Wprowadzenie
- Typowanie Reacta
- TypeScript w Reakcie
- Witaj, Reakcie
- Komponent
- Komponenty stanowe
- Komponenty bezstanowe
- Komponenty czyste
- Komponenty wyższego rzędu
- JSX i TSX
- Ćwiczenie 14.01. Ładowanie aplikacji za pomocą Create React APP
- Routing
- Ćwiczenie 14.02. React Router
- Komponenty biblioteki React
- Komponenty klasowe
- Komponenty funkcyjne (deklaracja funkcji)
- Komponenty funkcyjne (wyrażenie funkcyjne z funkcjami strzałkowymi)
- Bez JSX-a
- Stan w komponentach funkcyjnych
- Zarządzanie stanem w bibliotece React
- Ćwiczenie 14.03. Kontekst biblioteki React
- Firebase
- Ćwiczenie 14.04. Pierwsze kroki z platformą Firebase
- Stylizacja aplikacji biblioteki React
- Główny arkusz stylów
- Style o zakresie komponentów
- CSS-in-JS
- Biblioteki komponentów
- Zadanie 14.01. Blog
- Podsumowanie
Dodatek
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-8952-6 |
Rozmiar pliku: | 9,8 MB |