Details zum E-Book

TypeScript na warsztacie. Praktyczny przewodnik pisania  efektywnego kodu

TypeScript na warsztacie. Praktyczny przewodnik pisania efektywnego kodu

Ben Grynhaus, Jordan Hudgens, Rayon Hunte, Matt Morgan, Wekoslav Stefanovski

E-book

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!

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

  • Titel: TypeScript na warsztacie. Praktyczny przewodnik pisania efektywnego kodu
  • Autor: Ben Grynhaus, Jordan Hudgens, Rayon Hunte, Matt Morgan, Wekoslav Stefanovski
  • Originaler Titel: The TypeScript Workshop: A practical guide to confident, effective TypeScript programming
  • Übersetzung: Lech Lachowski
  • ISBN: 978-83-283-8952-6, 9788328389526
  • Veröffentlichungsdatum: 2022-08-09
  • Format: E-book
  • Artikelkennung: typesc
  • Verleger: Helion