Techniki Zaawansowane
2 godz. 35 min · Typescript · Full-stack i Programowanie
Adam GospodarczykZacznijmy od tego, że JavaScript jest dynamicznie typowany. Oznacza to, że typy zmiennych mogą się zmieniać w czasie wykonywania programu, a my nie mamy nad nimi kontroli. A po co nam ta kontrola? Między innymi po to, aby przypadkowo nie dodać typu number do string lub przekazać do funkcji nieprawidłowe danych. Ogromną zaletą jest to, że o tego typu błędach dowiadujemy się już na etapie pisania kodu a nie dopiero w trakcie jego wykonywania... na produkcji.
TypeScript umożliwia stosunkowo prostą migrację istniejących projektów JavaScript. W kursie na przykładzie zostały omówione trzy strategie, dzięki którym jesteśmy w stanie dodać statyczne typowanie do istniejącego kodu. W procesie migracji najważniejsze jest to, że przepisywanie kodu jesteśmy w stanie uzależnić również od poziomu naszej wiedzy na temat TypeScriptu i stopniowo dodawać kolejne elementy.
Na pierwszy rzut oka można uznać, że TypeScript tylko dodaje nam pracy, wymuszając dodatkową konfigurację oraz opisywanie typów. Mało tego zwiększa barierę wejścia w projekt dla mniej doświadczonych programistów. Trudno temu zaprzeczyć ALE - korzyści płynące ze statycznego typowania które wpływają na zmniejszenie liczby błędów oraz wykrywanie ich nawet na poziomie pisania kodu, oszczędzają czas który normalnie poświęcilibyśmy na późniejsze debugowanie aplikacji. Poza tym zwiększenie stabilności aplikacji daje szerokie korzyści biznesowe, które wielokrotnie wynagradzają nam czas wymagany na pisanie dodatkowej składni.
JavaScript jest językiem dynamicznie typowanym. W trakcie wykonywania programu, zmienne mogą zmieniać swój typ a my nie zawsze mamy nad tym świadomą kontrolę. Tylko ... po co nam ta kontrola? Główną zaletą statycznego typowania jest to aby uniknąć sytuacji w których przypadkowo przypisujemy tekst do zmiennej która powinna zawierać liczbę lub sytuacji w której przekazujemy do funkcji nieprawidłowe dane. Taki rodzaj pomyłek generuje błędy odniesienia (eng. ReferenceError), które zatrzymują działanie skryptu i są momentami bardzo uciążliwe do wykrycia. Dzięki statycznemu typowaniu, jesteśmy w stanie wykrywać je na etapie pisania kodu.
TypeScript na przestrzeni ostatnich lat zyskuje ogromną popularność w społeczności programistów JavaScript i coraz częściej jest nieodłącznym elementem ofert o pracę. W przypadku firm nastawionych na rozwój rozbudowanych aplikacji JavaScript już teraz jest w zasadzie standardem. Biorąc pod uwagę fakt, że najnowsze frameworki (np. Nest.js) wykorzystują TypeScript domyślnie, nauka tej technologii ma ogromny sens w kontekście rozwoju jako programista. I ostatnim argumentem za tym aby wziąć TypeScript na poważnie jest to, że stoi za nim firma Microsoft a on sam rozwijany jest już niemal 10 lat.
Ten kurs został stworzony z myślą o programistach, którzy podstawy TypeScriptu mają już za sobą i chcą poznać jego zaawansowane techniki. Aby w pełni wykorzystać wiedzę z tego kursu, niezbędna jest również zaawansowana znajomość JavaScriptu a w szczególności jego elementów prowadzonych w wersji ES6+. Zdecydowanie polecamy przerobienie kursu Podstawowego TypeScript, który znajdziesz na eduweb, przed korzystaniem z tego materiału.
3.9+
To już ostatnia lekcja na temat pliku konfiguracyjnego tsconfig
i tym razem pokażę ci ustawienia które wpływają na to w jaki sposób proces
kompilacji wyświetlany jest w linii poleceń co prawda
tych poleceń nie ma zbyt wiele natomiast zdecydowanie dobrze je znać jak
widzisz na ten moment w pliku konfiguracyjnym mam tutaj podstawowe ustawienia a w
moim katalogu projektu znajdują się dwa pliki przy czym ten plik główny
importuje ten drugi więc mamy tutaj absolutnie
podstawową strukturę która umożliwi nam dalszą pracę w tym momencie
jeżeli uruchomię polecenie tsc czyli uruchomię proces kompilacji no
to co prawda pojawił się katalog dist i tutaj mamy odpowiednio skompilowane
pliki natomiast jak widzisz w terminalu nie mamy tutaj żadnej informacji
o tym co się stało a nawet o tym że cokolwiek się stało zatem
w tym momencie możemy dodać opcję która wyświetli nam pliki które zostały
uwzględnione w procesie kompilacji jeżeli teraz ponownie uruchomię
proces kompilacji otrzymam tutaj pełną listę plików mojego
projektu oraz plików typescript analogicznie mogę teraz
wyłączyć tą opcję a następnie włączyć listEmittedFiles w celu wyświetlenia
plików które zostały wygenerowane w procesie kompilacji
i mamy faktycznie te dwa pliki z katalogu dist które generują
się na podstawie naszego projektu jak się możesz domyślić zarówno
jedna jak i druga opcja jest przydatna do tego aby sprawdzić czy na przykład
jakieś pliki nie są pomijane lub wręcz przeciwnie że jakieś pliki są
dołączane do naszego projektu a z jakiegoś powodu nie chcielibyśmy aby tak było
ponownie teraz wyłączę tą opcję aby pokazać ci kolejną
a kolejną jest diagnostyka ta
opcja jak widzisz daje nam szereg różnych informacji na temat tego w jaki sposób odbył
się proces kompilacji oraz jakie zasoby zostały wykorzystane tak że
bez wątpienia jest to skarbnica wiedzy w momencie gdy optymalizujemy proces
kompilacji na tym etapie mamy jeszcze jedną opcję którą chciałbym
ci teraz pokazać czyli opcję traceResolution ją również ustawiam
na true i uruchamia proces kompilacji i jak widzisz właśnie po to
w głównym zaimportowałem plik zewnętrzny aby pokazać ci w
tym momencie w jaki sposób typescript rozwiązuje ścieżki poszczególnych modułów
i jak się pewnie domyślasz informacje o tym w jaki sposób rozwiązywane są te
ścieżki przydają się chociażby w momencie gdy importujemy jakiś
moduł i chcemy upewnić się że jest importowany akurat z tej ścieżki
na której nam zależy tak że na ten moment jeżeli chodzi o ustawienia pliku
konfiguracyjnego pod kątem cli to w zasadzie takie najważniejsze
opcje które powinieneś znać co prawda jest jeszcze opcja pretty
która zajmuje się tym aby wyświetlać nam błędy w bardziej przyjazny
sposób natomiast na ten moment jest ona w trybie eksperymentalnym
no i dodatkowo domyślnie jest ustawiona na true zatem jeżeli
w jednym z plików zrobię na przykład literówkę a nastepnie wygeneruję nasz projekt
no to w bardzo precyzyjny sposób kompilator poinformuję mnie
w którym dokładnie miejscu powstał błąd i na czym może polegać w
sytuacji gdy ta opcja jest ustawa na false i tak samo wyłączę
sobie jeszcze tą opcję no to okaże się że błąd również
zostanie wyświetlony ale sam opis błędu jest tutaj zdecydowanie bardziej
lakonicznych i tym sposobem zbliżyliśmy się do końca tej lekcji
a zarazem całego tematu pliku konfiguracyjnego tsconfig
mam nadzieję że na ten moment opcje konfiguracyjne są dla ciebie jasne
a w tymczasem przechodzimy już do kolejnej lekcji do której serdecznie cię
zapraszam