Zaawansowane programowanie w TypeScript

Podczas szkolenia uczestnicy wejdą w głąb zaawansowanych mechanizmów systemu typów TypeScript. Omówimy praktyczne scenariusze związane z projektowaniem interfejsów, modelowaniem złożonych typów, budowaniem generycznych komponentów oraz tworzeniem API odpornych na błędy. Duży nacisk położymy na realne przykłady z dużych projektów, tak aby uczestnicy mogli świadomie wykorzystywać typowanie do zwiększania jakości i przewidywalności kodu. Po warsztatach uczestnicy posiadają umiejętność projektowania kodu, który jest skalowalny, łatwy w utrzymaniu i wspiera zespoły w pracy nad złożonymi aplikacjami front- i backendowymi.

Program

Wprowadzenie do TypeScript

  1. Czym jest TypeScript?
  2. Podstawy konfiguracji projektu TypeScript:
  3. Instalacja typescript za pomocą npm
  4. Tworzenie pliku tsconfig.json i jego konfiguracja (np. ustawienia strict, noImplicitAny, target, module)
  5. Omówienie kompilacji TypeScript do JavaScriptu i mapowanie kodu źródłowego
  6. TypeScript vs JavaScript

System Typów w TypeScript

  1. Podstawowe typy danych oraz ich poprawne zastosowanie
  2. Złożone typy:
  3. Tablice, krotki (tuples), typy wyliczeniowe (enum)
  4. Typy funkcji: Opisywanie sygnatur funkcji, przeciążanie funkcji, this w funkcjach oraz funkcje strzałkowe
  5. Obiekty i interfejsy:
  6. Jak definiować i używać interfejsów (interface) oraz typów (type) do opisania struktury danych
  7. Różnice między interface a type – kiedy lepiej używać jednego, a kiedy drugiego
  8. Readonly i const – jak wprowadzać niemutowalne obiekty
  9. Generyki (typy ogólne)
  10. Zaawansowane typy:
  11. Union Types i Intersection Types
  12. Typy warunkowe

Wnioskowanie typów

  1. Mechanizm wnoskowania typów
  2. Zawężanie typów (Type Narrowing)
  3. Kontrola przepływu i zaawansowane konstrukcje

Projektowanie typów

  1. Tworzenie czytelnych i bezpiecznych typów
  2. Modularyzacja typów i ponowne ich użycie
  3. Interfejsy i relacje między typami

Klasy i programowanie obiektowe w TypeScript

  1. Definiowanie klas i dziedziczenie:
  2. Podstawy klas w TypeScript
  3. Jak TypeScript wspiera dziedziczenie, polimorfizm oraz enkapsulację
  4. Abstrakcje i interfejsy:
  5. Kiedy używać klas abstrakcyjnych i interfejsów
  6. Przykłady bardziej zaawansowanego wykorzystania interfejsów w kodzie obiektowym
  7. Modyfikatory dostępu:
  8. Jak kontrolować dostępność pól i metod za pomocą public, protected, private.
  9. Wprowadzenie readonly w kontekście klas, aby zapewnić niemutowalność pól

Dobre praktyki

  1. Bezpieczne obsługiwanie błędów w TypeScript:
  2. Jak pisać typowo bezpieczne konstrukcje try-catch
  3. Typowanie wyjątków i tworzenie precyzyjnych komunikatów błędów
  4. Obsługa asynchroniczności:
  5. Zastosowanie typów w kontekście async i await
  6. Używanie Promise, a także korzyści płynące z typowania w operacjach asynchronicznych
  7. Testowanie w TypeScript
  8. Typowanie bibliotek zewnętrznych