Każdy, kto korzysta z ekosystemu JavaScript, jest dziś świadomy istnienia Typescript. Typescript jest jedną z najbardziej lubianych technologii*, a jego użycie stale rośnie (udział w użyciu wzrósł z 52% w 2018 roku do 78% w 2020 roku)*.
Obecna pozycja Typescript nie wzięła się znikąd, ponieważ technologia ta jest w stanie naprawdę poprawić nasze doświadczenie programistyczne. Bardziej przejrzyste kodowanie zwiększa kontrolę i przewidywalność kod. W tym artykule postaram się przekonać Cię do korzystania z Typescript.
Zazwyczaj podczas tworzenia aplikacji w aplikacji JavaScriptprzepływ może wyglądają następująco:
Dokonaj zmiany,
Przejdź do aplikacji i sprawdź zmienioną część / Uruchom (powiązane) testy.
Sprawdź, czy wszystko jest w porządku.
Dzięki Typescript możesz faktycznie wprowadzić zmianę i jeśli jest jakaś błąd typu w kodzie, dowiesz się o tym natychmiast dzięki komunikatowi o błędzie kompilatora lub informacji zwrotnej IDE w czasie rzeczywistym. Oczywiście kompilator Typescript nie rozwiąże każdego problemu i nie ostrzeże o wszystkich błędach, ale jego pomoc może być nieoceniona.
Lepsze uzupełnianie składni w IDE
To naprawdę proste. Jeśli korzystasz z dobrych IDE, takich jak WebStorm lub VSCode, otrzymasz better syntax completion with Typescript. Maybe it doesn’t sound like huge developer experience improvement but eventually every single improvement matters as it could save us some time and, again, prevent from a typo or a mistake. Also, we can define our type or interface once; as we don’t have to always remember structure, we can focus on writing business logic.
Mniej bolesna refaktoryzacja
Wyobraź sobie, że z jakiegokolwiek powodu musisz przeprowadzić refaktoryzację, na przykład dołączyłeś do projekt i otrzymujesz zadanie dodania nowej funkcji, ale ta funkcja jest w jakiś sposób powiązana ze starszym kodem. Typescript może sprawić, że będzie to łatwiejsze i mniej bolesne, ponieważ gdy dokonasz zmiany i jest inne miejsce, w którym musisz dokonać kolejnej zmiany, kompilator ostrzeże cię o tym.
Na przykład - może to być zmieniona sygnatura funkcji lub, po zmianie, plik funkcja zwróci coś zupełnie innego, więc również zwracany typ będzie inny.
Większa pewność co do bazy kodu
JavaScript jest słabo i dynamicznie typowany, więc po zainicjowaniu zmiennej wartością let query = '' Później w kodzie programista może przez pomyłkę zrobić coś irracjonalnego, na przykład query = truei będzie to prawidłowy kod JS.
W dobrze napisanym kodzie przypisanie wartości logicznej do zmiennej, która wcześniej była ciągiem znaków, nie powinno mieć miejsca. Zazwyczaj więc przypisanie ze zmianą typu jest wynikiem błędu.
Podczas korzystania z Typescript nie możemy zmienić typu zmiennej, więc jeśli utworzymy zmienną let query = '' zmienna, będzie to ciąg i nie będziemy w stanie zmienić jego typu przez pomyłkę.
Jeśli chcemy, aby zmienna była więcej niż jednego typu, zawsze robimy to jawnie za pomocą unii typów, na przykład ciąg znaków | liczba.
Dlatego też Typescript sprawia, że nasz kod jest bardziej przewidywalny i jednoznaczny. Ponadto Typescript zadba o jawność w analizie przepływu sterowania i jeśli istnieje możliwość, że coś może pójść nie tak, ostrzeże cię.
Tutaj w przykładzie pierwszym jeśli otrzymamy błąd:
TS2339: Właściwość "battery" nie istnieje w typie "ClothingProduct". 2 razy, dla bateriaoraz baran właściwości.
W drugim bloku - innyotrzymamy ten błąd dla rozmiar własność. Oczywiście jest to tylko przykład pokazujący, w jaki sposób dyskryminowane związki zawodowe i analiza przepływu sterowania działa w Typescript, więc nie robimy nic zbyt skomplikowanego z tym kodem.
Łatwa, stopniowa migracja z JavaScript
Poprawny kod JavaScript jest jednocześnie poprawnym kodem Typescript, więc możesz migrować swoją bazę kodu krok po kroku. Zazwyczaj używanie trybu ścisłego w Typescript jest dobrą praktyką, ale w tym przypadku, musimy zacząć od "strict": false w tsconfig.json i powinniśmy również ustawić 2 dodatkowe opcje.
"allowJs": true, // pozwoli nam to na używanie plików .js, a typ nie będzie w nich sprawdzany
"skipLibCheck": true // pominie sprawdzanie typów w bibliotekach, których używamy
Dzięki tym opcjom możemy migrować z JS do TS krok po kroku - plik po pliku, po prostu zmieniając rozszerzenie z .js(x) do .ts(x) i dodawanie typów w plikach. Korzystając z tego podejścia, możemy uniknąć setek lub tysięcy przerażających błędów kompilacji.
Podsumowanie
Myślę, że powinniśmy użyć Maszynopis tak często jak możliwyponieważ jest to naprawdę korzystne w dłuższej perspektywie. Pomaga w utrzymaniu projektów, zwiększa doświadczenie programistów i sprawia, że nasza baza kodu jest bardziej przejrzysta i niezawodna.
Jednak, jak zawsze, istnieją wyjątki - na przykład dla prostej strony docelowej gdzie JavaScript jest używany tylko do przełączania klasy lub innego prostego przypadku, Typescript nie ma sensu. Trzeba też pamiętać, że aby w pełni wykorzystać możliwości Typescriptu, musimy nauczyć się go używać na wystarczającym poziomie, a to może zająć trochę czasu. Mimo wszystko uważam, że jest to bardzo opłacalna inwestycja czasu.