Читать книгу Programowanie w TypeScript - Boris Cherny - Страница 6
Przedmowa
ОглавлениеTo książka dla programistów w szerokim tego słowa znaczeniu: profesjonalnych inżynierów JavaScriptu, specjalistów C#, zwolenników Javy, miłośników Pythona, pasjonatów Ruby, fanatyków Haskella. Niezależnie od tego, w jakim języku programujesz, o ile masz pewne doświadczenie i znasz podstawy funkcji, zmiennych, klas i błędów, to książka dla ciebie. Pewne doświadczenie w pracy z JavaScriptem, m.in. podstawowa znajomość modelu DOM i sieci, będzie stanowiło nieocenioną pomoc. Chociaż nie zagłębiamy się w szczegóły, te domeny stanowią źródło doskonałych przykładów, które będą mniej zrozumiałe dla niewtajemniczonych.
Niezależnie od praktykowanego języka wszyscy programiści wiedzą, jak to jest śledzić wyjątki, analizując poszczególne wiersze kodu w poszukiwaniu błędu i sposobu jego naprawienia. Takich właśnie doświadczeń ma nam oszczędzić TypeScript, który automatycznie bada kod i wskazuje przeoczone błędy.
Nic nie szkodzi, jeśli nie miałeś okazji programować w języku z typowaniem statycznym. Wyjaśnię, czym są typy, jak efektywnie wykorzystywać je do poprawiania stabilności programów, lepszego dokumentowania kodu i skalowania aplikacji na większą liczbę użytkowników, inżynierów i serwerów. Gdy to możliwe, będę unikał wielkich słów, wyjaśniając koncepcje w intuicyjny, łatwy do zapamiętania i praktyczny sposób z wykorzystaniem wielu przykładów, które pomagają w skonkretyzowaniu problemów.
To jest właśnie najlepsze w TypeScripcie: w odróżnieniu od wielu innych języków z systemami typów TypeScriptu jest praktyczny. Wprowadza zupełnie nowe koncepcje, które umożliwiają zwięźlejszą i precyzyjniejszą komunikację i tym samym pisanie aplikacji w sposób, który jest ciekawy, nowoczesny i bezpieczny.
Układ książki
Ta książka ma dwa cele: pomóc czytelnikom zrozumieć działanie języka TypeScript (teoria) i dostarczyć wielu przydatnych porad dotyczących pisania kodu produkcyjnego TypeScriptu (praktyka).
Ponieważ TypeScript jest tak praktycznym językiem, teoria szybko staje się praktyką i zdecydowana część książki łączy oba aspekty, przy czym kilka pierwszych rozdziałów koncentruje się na teorii, a kilka ostatnich – na praktyce.
Zacznę od wytłumaczenia, czym są kompilatory, funkcje sprawdzania typów oraz typy. Później ogólnie omówię różne typy i operatory typów w TypeScripcie, ich zastosowania i sposoby użycia. Po wprowadzeniu podstawowych zagadnień zajmę się bardziej zaawansowanymi tematami, takimi jak wyrafinowane funkcje systemu typów, obsługa błędów i programowanie asynchroniczne. Na zakończenie pokażę, jak używać TypeScriptu w połączeniu z twoim ulubionym frameworkiem (front-end i back-end), migrując istniejący projekt JavaScriptu do TypeScriptu i uruchamiając aplikację w środowisku produkcyjnym.
Na końcu większości rozdziałów umieściłem zestaw ćwiczeń. Warto spróbować je wykonać, aby lepiej zrozumieć omawiane zagadnienie dzięki zastosowaniu go w praktyce niż tylko w wyniku przeczytania rozdziału. Rozwiązania ćwiczeń są dostępne w internecie pod adresem: https://github.com/bcherny/programming-typescript-answers.
Styl
W całej książce starałem się stosować ten sam styl programowania. Niektóre aspekty tego stylu wynikają z osobistych preferencji, np.
Używam średników tylko wtedy, gdy to konieczne.
Stosuję wcięcia o szerokości dwóch spacji.
Używam krótkich nazw zmiennych, takich jak: a, f czy _ , gdy program to szybki przykład lub gdy struktura programu jest ważniejsza niż jego szczegóły.
Ten styl kodowania ilustruje również pewne zalecenia, których moim zdaniem warto przestrzegać. Oto kilka z nich:
Należy stosować najnowszą składnię i funkcje JavaScriptu (najnowsza wersja JavaScript jest zwykle nazywana po prostu „esnext”). Dzięki temu kod jest zgodny z najnowszymi standardami, co poprawia jego interoperacyjność i wyszukiwalność oraz może pomóc w szybszym wdrażaniu nowych pracowników. Ponadto zapewnia dostęp do wielu wspaniałych, nowoczesnych funkcji JavaScriptu, takich jak funkcje strzałkowe, obietnice i generatory.
W większości sytuacji należy zachowywać niezmienność struktur danych, stosując operatory rozwijania (...)1.
Wszystko powinno mieć typ, najlepiej wnioskowany. Nie należy nadużywać jawnych typów. Takie podejście pomaga w uzyskiwaniu jasnego, lakonicznego kodu i zwiększa bezpieczeństwo dzięki ujawnianiu nieprawidłowych typów zamiast ich mitygowania.
Kod powinien być uogólniony i służyć do wielokrotnego użytku, dlatego warto zaprzyjaźnić się z polimorfizmem (patrz „Polimorfizm” na stronie 64).
Oczywiście, nie są to nowe pomysły. TypeScript działa jednak szczególnie dobrze, gdy są one stosowane. Wbudowany kompilator TypeScriptu wspierający starsze wersje, obsługa typów tylko do odczytu, zaawansowane wnioskowanie typów, głębokie wsparcie dla polimorfizmu i w pełni strukturalny system typów sprzyjają programowaniu w dobrym stylu, a język pozostaje bardzo ekspresyjny i wierny bazowemu językowi JavaScript.
Kilka uwag, zanim zaczniemy pracę.
JavaScript nie odsłania wskaźników i referencji, zamiast tego ma typy wartościowe i typy referencyjne. Wartości są niezmienne i zaliczają się do nich łańcuchy, liczby oraz wartości logiczne, natomiast referencje wskazują zazwyczaj modyfikowalne struktury danych, takie jak: tablice, obiekty, funkcje. W tej książce termin „wartość” jest często stosowany swobodnie w odniesieniu zarówno do wartości, jak i referencji JavaScriptu.
Życie czasami zmusza nas do pisania niedoskonałego kodu TypeScriptu, gdy musimy zapewnić interoperacyjność z kodem JavaScriptu lub gdy korzystamy ze starego kodu bądź z zewnętrznych bibliotek z nieprawidłowymi typami, lub gdy po prostu nam się spieszy. Ta książka uczy, jak należy pisać kod TypeScript, i przekonuje, dlaczego warto walczyć z pokusą obniżania jakości. W praktyce jednak kryteria oceniania poprawności kodu zależą od ciebie i twojego zespołu.
Konwencje zastosowane w książce
W tej książce zostały zastosowane następujące konwencje typograficzne:
Kursywa
Wskazuje nowe terminy, adresy URL oraz adresy e-mail, nazwy i rozszerzenia plików.
Stała szerokość
Stosowana w listingach programów, jak również wewnątrz akapitów do odwoływania się do elementów programu, takich jak: nazwy zmiennych lub funkcji, typy danych, zmienne środowiskowe, instrukcje, słowa kluczowe.
Stała szerokość i kursywa
Wskazuje tekst, który należy zastąpić wartościami podanymi przez użytkownika lub wynikającymi z kontekstu.
Ten element sygnalizuje wskazówkę lub sugestię.
Ten element sygnalizuje uwagę ogólną.
Ten element sygnalizuje ostrzeżenie lub przestrogę.
Korzystanie z przykładów kodu
Materiały pomocnicze (przykłady kodu, ćwiczenia itd.) można pobrać ze strony https://github.com/bcherny/programming-typescript-answers.
Ta książka ma pomóc w realizowaniu zadań. Zasadniczo prezentowane w niej przykłady kodu można wykorzystywać we własnych programach i we własnej dokumentacji. Nie trzeba kontaktować się z nami w celu uzyskania zezwolenia, o ile nie kopiuje się znacznej części kodu. Na przykład pisanie programu wykorzystującego różne fragmenty kodu z książki nie wymaga zezwolenia. Sprzedaż i dystrybucja płyty CD-ROM z przykładami z książek O’Reilly Media wymaga zezwolenia. Odpowiadanie na pytanie poprzez zacytowanie tej książki i umieszczonego w niej przykładu kodu nie wymaga zezwolenia. Umieszczanie znaczącej części przykładowego kodu z tej książki w dokumentacji własnego produktu wymaga zezwolenia.
Będziemy wdzięczni za podanie źródła, choć nie wymagamy tego. Odwołanie do źródła zazwyczaj zawiera tytuł, autora, wydawnictwo i numer ISBN. Na przykład: Programowanie w języku TypeScript, Boris Cherny (O’Reilly). Copyright 2019 Boris Cherny, 978-1-492-03765-1.
W razie wątpliwości, czy użycie przykładów kodu wykracza poza ogólnie przyjęte zasady lub określone wyżej zezwolenia, prosimy o kontakt pod adresem: permissions@oreilly.com.
O’Reilly Online Learning
O’Reilly Media od niemal 40 lat oferuje szkolenia techniczne i biznesowe oraz dostarcza wiedzę, która pomaga firmom w odnoszeniu sukcesu.
Oferujemy jedyną w swoim rodzaju sieć ekspertów i innowatorów, którzy dzielą się swoją wiedzą i doświadczeniem za pośrednictwem książek, artykułów, konferencji i naszej platformy e-learningowej. Platforma e-learningowa O’Reilly zapewnia kolekcję dostępnych na żądanie warsztatów na żywo, kompleksowych ścieżek szkoleniowych, interakcyjnych środowisk programistycznych, a także ogromny zbiór tekstów i wideo firmy O’Reilly oraz ponad dwustu innych wydawców. Dodatkowe informacje można znaleźć na stronie http://oreilly.com/.
Jak się z nami skontaktować
Komentarze i pytania dotyczące tej książki prosimy kierować do wydawnictwa:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (w USA lub Kanadzie)
707-829-0515 (połączenia międzynarodowe lub lokalne)
707-829-0104 (faks)
Przygotowaliśmy stronę internetową dotyczącą tej książki, na której umieszczamy erratę, przykłady i dodatkowe informacje. Jest ona dostępna pod adresem: https://oreilly/programming-typescript.
Aby przekazać swój komentarz lub zadać pytanie techniczne dotyczące tej książki, można wysłać e-mail na adres: bookquestions@oreilly.com.
Dodatkowe informacje dotyczące naszych książek, kursów, konferencji i aktualnych wydarzeń zawiera strona internetowa: http://www.oreilly.com.
Można nas znaleźć na Facebooku: http://facebook.com/oreilly.
Można nas śledzić na Twitterze: http://twitter.com/oreillymedia.
Można także oglądać nas na kanale YouTube: http://www.youtube.com/oreillymedia.
Podziękowania
Na pisanie tej książki przeznaczyliśmy rok wczesnych poranków, pracowitych nocy i weekendów. Tak naprawdę stanowi ona jednak efekt wielu lat pisania kodu i gryzmolenia.
Dziękuję wydawnictwu O’Reilly za danie mi szansy napisania tej książki oraz mojej redaktorce Angeli Rufino za wsparcie w tym procesie. Dziękuję Nickowi Nance za podrozdział „API zapewniające bezpieczeństwo typów” na stronie 204 oraz Shyamowi Seshadri za podrozdział „Angular” na stronie 201. Dziękuję redaktorom technicznym: Danielowi Rosenwasserowi z zespołu TypeScriptu, który poświęcił nierozsądną ilość czasu na czytanie tego manuskryptu i oprowadzanie mnie po niuansach systemu typów TypeScriptu, a także Jonathanowi Creamerowi, Yakovowi Fainowi, Paulowi Buyingowi oraz Rachel Head za uwagi techniczne i opinie. Dziękuję mojej rodzinie: Lizie i Ilyi, Vadimowi, Rozie i Alikowi, Fainie i Yosifowi za zachęcanie mnie do realizacji tego projektu.
Przede wszystkim jednak dziękuję mojej partnerce Sarze Gilford, która wspierała mnie w procesie pisania, nawet gdy oznaczało to anulowanie planów na weekend, zarywanie nocy w celu pisania i programowania oraz o wiele za dużo spontanicznych rozmów o szczegółach systemu typów. Bez Ciebie nie mógłbym tego dokonać i będę zawsze Ci wdzięczny za wsparcie.