- Oprogramowanie
TypeScript — czym jest i jak może usprawnić pracę programisty?
TypeScript jest językiem programowania, który szybko zyskuje na popularności. Co warto o nim wiedzieć, jakie wprowadza udogodnienia i jak użycie go w projektach może usprawnić prace programistyczne?
Według ankiety przeprowadzonej w przez Stack Overflow w 2020 r. TypeScript (TS) jest drugim najbardziej lubianym językiem programowania.
W przypadku języka TypeScript nie chodzi jednak tylko o poziom popularności i odczucia, które, jak wiemy, nie powinny kierować biznesem. Istnieje wiele powodów, dla których warto bliżej przyjrzeć się temu językowi. Poniżej znajdziesz najważniejsze z nich.
Spis treści
Mocne typowanie
TypeScript jest nadzbiorem JavaScript, który pozwala na wprowadzenie silnego typowania. Polega ono na nadawaniu zmiennym ściśle określonego typu danych i egzekwowaniu jego niezmienności.
Jeszcze kilka lat temu w PHP i JavaScripcie — najpopularniejszych językach programowania do tworzenia stron internetowych, brak mocnego typowania uznawany był za zaletę, która obniżała próg wejścia dla nowych programistów. Jednak wraz ze wzrostem skomplikowania projektu szybko okazywało się, że jest to wada, która zwiększa ryzyko wystąpienia błędów.
JavaScript znany jest ze swoich nieintuicyjnych reguł rzutowania między typami, które pozwalają wielu drobnym błędom i nieoczekiwanym zachowaniom na pozostanie niezauważonymi. Doskonale ilustruje to wynik poniższej komendy:
const a = 'ba' + + 'a'; console.log(a.toLowerCase()); // zwraca 'banan'
Jako programiści, wolimy unikać tak nieprzyjemnych niespodzianek. Kompilator powinien powiadomić nas o takich problemach, dzięki czemu unikniemy całej klasy błędów, które mogą być trudne do wyśledzenia.
Oczywiście TS pozwala na dużo więcej niż sprawdzanie zgodności typów prostych. Pomimo całej elastyczności JavaScriptu i wielu paradygmatów i wzorców programowych dostępnych w tym języku, TS jest w stanie pokryć je typami. TypeScript zazwyczaj sam ustala typ na podstawie sposobu działania kodu, ale można go również zdefiniować samodzielnie.
Typy mogą być ustalane zarówno dla parametrów, jak i wartości zwrotnych funkcji oraz stałych i zmiennych lokalnych. W przypadku bardziej złożonych struktur danych (jak choćby obiekty z opcjami wprowadzane do funkcji jako jedyny parametr) możliwe jest zdefiniowanie ich typów i wymagań jako osobne, nazwane typy danych, które można ponownie wykorzystać. W rezultacie otrzymujemy przejrzysty kod i lepszą strukturę danych, dzięki czemu wszyscy w zespole wiedzą, jak pisać spójny kod.
Dodatkowe właściwości języka
TypeScript nie ogranicza się do wzbogacania JavaScriptu wyłącznie o typowanie. TS zapewnia szereg właściwości niedostępnych w JS, które zwiększają efektywność programistów. Wiele rzeczy, które utknęły w komisji TC39 na poziomie Stage2 czy Stage3, w TS już jest od dawna zaimplementowanych. Mowa na przykład o dekoratorach, których próby standaryzacji podejmowane są przez ECMA już trzeci rok, podczas gdy w TS są one dostępne już od około pięciu lat.
Innymi, równie ważnymi usprawnieniami, jakie daje TypeScript są:
- Usprawnienia w funkcjach — TS ułatwia pracę z funkcjami, zwracając błędy, gdy pojawi się zbyt dużo lub zbyt mało argumentów. Zapobiega to całej klasie często trudnych do wykrycia błędów, będących zmorą programistów.
- Poziomy widoczności metod — publiczny, chroniony i prywatny.
- Właściwości klasy — również z poziomami widoczności.
- Interfejsy — definicje „kształtu” struktur danych wielokrotnego użytku równocześnie porządkujące, objaśniające i dokumentujące kod.
- Typy generyczne — umożliwiają implementację uniwersalnych komponentów, które zapewniają dobrze zdefiniowane, typowane działanie w różnych miejscach kodu.
- Enumeracje — pozwalają na typowane zdefiniowanie zestawu nazwanych stałych w zgrabny sposób. Kompilator pilnuje, aby nie używać nieznanych stałych, jednocześnie wyświetlając podpowiedzi dla dopuszczalnych wartości.
Wszystkie te usprawnienia dają pewność utrzymania zgodności typów i ułatwiają wdrażanie dobrze zdefiniowanych struktur danych wielokrotnego użytku i tworzenie bardziej czytelnego kodu. Przyspieszają więc proces wdrażania nowych programistów i pomagają zapobiegać długowi technologicznemu.
Wsparcie IDE
Pracując nad TypeScriptem, Microsoft skupia się również nad umożliwieniem integracji IDE z kompilatorem. Mowa nie tylko o bezpłatnym Visual Studio Code (należącym do Microsoftu), integracje bowiem mogą być używane przez jakikolwiek edytor, jak Sublime czy WebStorm.
Oprócz oczywistego podświetlania i sprawdzania składni, takie wsparcie zapewnia też autouzupełnianie (np. dozwolonych metod obiektu wraz z ich parametrami) czy szybkie podpowiedzi nt. danego elementu (np. nagłówek, parametry, krótkie objaśnienie metody). W wielu przypadkach dostępne są również szybkie akcje, jak dodawanie brakujących importów czy usuwanie niedostępnego kodu.
Takie wsparcie znacząco usprawnia pracę programisty, umożliwiając mu skoncentrowanie się na trudniejszych aspektach programowania, bez rozpraszania się rzeczami, które często można rozwiązać automatycznie. Dzięki niemu programista może pisać kod szybciej, poświęcając mniej czasu na debugowanie, ponieważ błędy zgłaszane są w czasie rzeczywistym.
Stabilność i wiarygodność
TypeScript jest rozwijany głównie przez Microsoft. Mimo że firma w latach 90. zyskała złą sławę korporacyjnego molocha, postrzeganie Microsoftu zmieniło się, gdy stanowisko CEO objął Satya Nadella. Wówczas firma pewnie weszła w Open Source, czyli model, na którym opierają się Typescript i Visual Studio Code.
Kod żródłowy TypeScriptu dostępny jest na GitHubie, więc każdy programista może zgłaszać uwagi i pull requesty. Warto również zwrócić uwagę na liczbę gwiazdek, które TS ma na GitHubie (ponad 60 tysięcy!). Świadczy to nie tylko o liczbie osób zainteresowanych narzędziem, ale też o sile społeczności, jaka za nim stoi. Programiści mogą też otrzymać wsparcie na StackOverflow oraz w sekcji issues na GitHubie.
Z drugiej strony, przypadek TypeScript pokazuje, że nie wszystkie korporacje zwlekają z wprowadzaniem ulepszeń i przydatnych rozwiązań. TS charakteryzuje regularny cykl wydań, a średnio co drugie przynosi znaczące usprawnienia czy nowe konstrukty językowe. Jako że język wspierany jest przez giganta technologicznego, daje to gwarancję, że narzędzie to pozostanie z nami na długo i będzie wspierane przez wiele lat. Tym bardziej że zostało pozytywnie odebrane przez branżę i pozwala na tworzenie skalowalnych aplikacji.
Dlaczego warto?
Jedną z głównych zalet TypeScriptu jest to, że eliminuje on wiele błędów, które wydają się trywialne, ale są trudne do wyśledzenia. Po drugie, TS przyczynia się do pisania kodu lepszej jakości, co zapobiega powstawaniu długu technologicznego. Zyskujemy przejrzysty i samodokumentujący kod, co z kolei obniża próg wejścia dla nowych programistów.
Co więcej, programista nie musi pisać testów jednostkowych, sprawdzających jak kod reaguje na wprowadzanie argumentów o niewłaściwych wartościach i czy zwraca wartości przewidzianych typów. Przydatne ułatwienia, nie sądzisz?