Recenzja - TypeScript na poważnie

Cześć 👋

Ostatnio trafiła w moje ręce książka o TypeScripcie Michała Miszczyszyna - TypeScript na poważnie. Jako iż śledzę autora od dłuższego czasu, ze zniecierpliwieniem czekałem na premiere. Czy było warto tyle czekać? Przecież materiałów o TypeScripcie jest już wiele...

Jak ja uczyłem się TypeScripta?

Moje początki z tym językiem bywały różne... Podstawowe założenia przychodziły z łatwością, bowiem znałem już wcześniej JavaScript, schody pojawiały się przy bardziej zaawansowanych tematach, musiałem doczytywać, próbować i głowić jak rozwiązać dany problem.

Z jakich materiałów korzystałem? Po prostu usiadłem do dokumentacji i czytałem ją od deski do deski. Bywało to momentami ciężkie, bowiem dokumentacja TypeScripta miejscami nie należała do najprzyjemniejszych. Jakiś czas później napisałem trzy obszerne wpisy o TypeScripcie, pozwoliło mi to jeszcze bardziej zagłębić się w odmęty dokumentacji.

Zastanawiałem się więc, czy książka dostarczy mi jakieś nowej wiedzy, czy też będzie to tylko powtórka i garść spostrzeżeń autora.

Jak jest naprawdę? Zapraszam do recenzji!

Pierwsze kroki

Pierwszy rozdział w książce odpowiada na pytanie "Po co nam TypeScript?". Nie jest to tylko lista zalet języka, a odpowiednie wprowadzenie dla osób, które nie miały wcześniej do czynienia z TypeScriptem. Poza tym, autor opisuje również konwencje nazewnicze, którymi będzie posługiwał się w kolejnych rozdziałach.

Kolejny rozdział to już rzucenie czytelnika na głęboką wodę, ale niezupełnie. Poznajemy tutaj tak naprawdę podstawy, do tego, żeby swobodnie zacząć poznawać TS. Czemu na głęboką wodę? Bo pojawia się pierwszy kod! Ale spokojnie, nic nie będzie tu dla nas magicznego, czy też niezrozumiałego.

Nie tylko TypeScript

Jeśli spojrzysz na spis treści możesz zauważyć rozdział trzeci Dygresja: Wprowadzenie do przydatnych elementów z ES6+, dobra dobra, ale zaraz ja tu się nie przyszedłem uczyć JavaScriptu, chcę poznać TypeScript!

Tak mógłby krzyknąć zbuntowany czytelnik, nie powiem, w pierwszej chwili jak zobaczyłem ten rozdział to miałem mieszane uczucia. To tylko mylne pierwsze wrażenie. Po pierwsze, autor wspomina, że ten rozdział jest opcjonalny i wyjadacze ECMAScriptu mogą go pominąć.

Polecam jednak tak szybko z niego nie rezygnować i przeczytać całość. Pokazuje on bowiem jak ważny jest JavaScript, że TypeScript to tak na prawdę tylko lub aż jego nieformalny nadzbiór.

Temat JavaScriptu wielokrotnie przewija się w książce i to niewątpliwie jedna z zalet tej książki. Michał nieustanie dba, abyśmy mogli płynnie wejść w ten świat, pokazuje to chociażby rozdział 19 - Migracja z JavaScriptu.

To co jest jeszcze warte nadmienienia, autor często opowiada o TypeScripcie z szerszej perspektywy. Co to oznacza, już tłumaczę, nie skupia on się wyłącznie na samych elementach języka, ale podaje nam taką otoczkę typów jako takich, nie raz nawiązując do innych, statycznie typowanych języków. Wyjaśnia on pewne zagadnienia i traktuję temat od podszewki okraszając go dozą osobistych przemyśleń.

Podstawy

Kolejne cztery rozdziały przeprowadzają nas przed podstawy TSa. Dowiecie się z nich wszystkiego o typach, poznacie różnice pomiędzy typowaniem statycznym i silnym. Będziecie po nich umieli otypować funkcje i klasy. Nie jest jednak nudno, autor sprawnie, co nie znaczy, że za szybko, przechodzi po kolejnych elementach języka i wnikliwie je wyjaśnia.

To, co mi się bardzo podoba, to nawiązania do JavaScriptu, o których już wcześniej wspominałem. Pokazuję to więź jaka jest utrzymana pomiędzy tymi dwoma językami. Jest to super zabieg i znacząco ułatwia naukę początkującym. Przykład? Nie trzeba daleko szukać, dla mnie świetne było wyjaśnienie różnic pomiędzy słowem kluczowym private a #, które tylko z pozoru są podobne do siebie.

Tematy zaawansowane

Tutaj zaczyna się zabawa dla osób, które znają już podstawy TSa. Ja osobiście wiele z tych zagadnień już znałem i rozumiałem, ale jeszcze więcej było dla mnie nowych lub wartych przypomnienia. Tematy o typach kowariantnych, kontrawariantnych, biwariantnych i inwariantnych to na pierwszy rzut oka czarna magia, trzeba się porządnie skupić, żeby zrozumieć to zagadnienie.

Jest to przykład czysto teoretyczny, który później przekłada się na praktykę. Ale praktyki jest tutaj nie mało, każde zagadnienie jest wyjaśniane i posiada przykład wykorzystania. Trudniejsze zagadnienia są wyjaśniane na kilku przykładach i autor stara się jak najlepiej wyjaśnić o co w nich chodzi, nie powiem, bardzo dobrze mu to wychodzi. Często wyjaśnienie jest wręcz łopatologiczne, każdy powinien, jeśli nie za pierwszym, to po kolejnym przeczytaniu danego fragmentu, zrozumieć nowo wprowadzony kawałek kodu.

Praktyka

Nie łatwo jest napisać książkę o programowaniu. W końcu w tym fachu chodzi o praktykę, rozwiązanie pewnego problemu a nie o wkuwanie suchych faktów...

Tutaj praktyki nie brakuję, Michał często daje nam pewne zadania, np. dodanie funkcjonalności/typów do przedstawionego kodu, dzięki temu możemy przećwiczyć dopiero co poznane zagadnienie.

Chciałbym wspomnieć tutaj o rozdziale, który jest jednym z moich ulubionych - Unie w praktyce. Dostajemy pewien realny problem do rozwiązania, autor przedstawia nam po kolei pewne sposoby, wyjaśniając po kolei napotkane kawałki kodu. Omawiane są wady i zalety. Na koniec wybieramy to najlepsze rozwiązanie, tylko po to, żeby w dalszej części książki powrócić do tych przykładów, gdy trochę otworzy nam się głowa :)) Świetny zabieg, jest ich jeszcze kilka, poznajemy jakiś temat, a dopiero potem do niego wracamy i wszystko nagle staje się jasne.

Osobiste przemyślenia

Skończę już z tym spojlerowaniem, chociaż to dopiero wierzchołek góry lodowej. Nie trudno się domyśleć co sądzę o tej książce. Jest świetna! Gdy po raz pierwszy do niej usiadłem przeczytałem połowę, siedziałem nad nią do 4 nad ranem, tak mnie wciągnęła. Czyta się to na prawdę bardzo dobrze, nie wiem czemu, ale nie mam wrażenia, że to książka moloch i wielka encyklopedia języka.

Nie zrozumcie mnie źle, jest tu bardzo dużo wiedzy, ale całość okraszona jest przyjaznym w odbiorze językiem. Mi styl pisania Michała bardzo odpowiada, nie ma tu miejsca na lanie wody, przeciąganie tematów, tak jak ma to miejsce na kursach z Udemy ;) Jest sprawnie i konkretnie, czyli to co lubię najbardziej.

Nie brakuję tutaj też, co prawda małej, ale dawki humoru, anegdot czy opowieści. Moja ulubiona to ta sondzie kosmicznej.

Największa zaleta tej książki? Niewątpliwie zawartość, ale to zbyt oczywiste, dla mnie największą wartością tej książki jest przekazanie doświadczenia autora. Poznajemy masę sztuczek, przydanych tricków i dobrych praktyk. Jest to taka droga od juniora do seniora. A to, że niektóre zagadnienia są trudniejsze i możemy nie łapać wszystkiego za pierwszym razem, no cóż, na wszystko potrzebujemy czasu, oswojenia się z nowym tematem i przede wszystkim praktyki.

Do książki na pewno będę powracał i zapewnę przeczytam ją całą jeszcze raz, na chłodno.

Podsumowanie

Z czystym sumieniem zachęcam Was do zakupu książki. Nie ważne na jakim poziomie jesteś, na pewno dużo z niej wyciągniesz.

I pamiętaj, uczysz się na własną odpowiedzialność, jeśli raz już wejdziesz w świat TypeScripta, nie będziesz chciał wracać do JavaScriptu 😎

Do usłyszenia!