Często spotykam się z pytaniem: jaka jest zasadnicza różnica między JavaScript a TypeScript?
Przekonajmy się!
Od momentu rozpoczęcia programowania, JavaScript (JS) zapewne towarzyszy Ci w projektach front-endowych. Jeśli masz pewne doświadczenie z JS, pomyśl o TypeScript jako o jego rozszerzeniu – to JS wzbogacony o dodatkowe funkcje, które podnoszą jakość i przejrzystość kodu. Microsoft stworzył TypeScript jako projekt open source, aby ułatwić proces tworzenia kodu JS i umożliwić wczesne wykrywanie błędów na etapie kompilacji.
W tym artykule szczegółowo omówimy charakterystyczne cechy JavaScript i TypeScript, porównując oba języki skryptowe.
Czym jest JavaScript?
JavaScript służy do tworzenia skryptów działających po stronie klienta. Możesz umieścić skrypt bezpośrednio w pliku HTML lub utworzyć odrębny plik z rozszerzeniem .js i zaimportować go do HTML. Typowym przykładem zastosowania JavaScript w praktyce jest walidacja formularza logowania, gdzie po wprowadzeniu nieprawidłowej nazwy użytkownika lub hasła wyświetla się komunikat o błędzie.
Spróbujmy napisać prosty kod JS i uruchomić go w przeglądarce:
Utwórz plik o nazwie example.html i wklej do niego poniższy kod:
<script> feeling = 'happy'; feeling = 23; </script>
Ten prosty kod deklaruje zmienną i przypisuje jej wartość „happy” (tekst). Następnie tej samej zmiennej przypisujemy wartość innego typu (liczbę). JavaScript nie zgłosi żadnego błędu i bez problemu uruchomimy ten kod w przeglądarce. Teraz pobierzmy wartość „uczucia” od użytkownika:
Nasz kod HTML będzie wyglądał w ten sposób:
<input type = "textbox" id = "howyoufeel">
A odpowiadający mu skrypt będzie wyglądał tak:
feeling = document.getElementById("howyoufeel").value;
O ile nie dodamy do skryptu dodatkowej kontroli, JS zaakceptuje dowolną wartość wprowadzoną przez użytkownika. W konsekwencji, do zmiennej „feeling” możemy wpisać np. „234”, „@.#$%” itp.
Charakterystyczne cechy JavaScript
Na podstawie powyższego przykładu możemy wyróżnić następujące cechy JavaScript:
- Jest to język skryptowy o słabym typowaniu.
- Stosuje się go do skryptów po stronie klienta i serwera (z wykorzystaniem node.js).
- Jest elastyczny i dynamiczny.
- Jest obsługiwany przez wszystkie popularne przeglądarki.
- Jest lekki i interpretowany.
Jeśli chcesz zgłębić tajniki JavaScript, polecam Ci ten kurs Udemy.
Czym jest TypeScript?
Aplikacje w realnym świecie wymagają rozbudowanych mechanizmów walidacji i dynamicznej kontroli danych. W takich projektach kod JavaScript może stać się trudny w utrzymaniu, zwłaszcza ze względu na brak statycznego sprawdzania typów. Kluczowe jest, aby dane wejściowe od użytkownika były weryfikowane od samego początku. Właśnie tutaj pojawia się TypeScript.
TypeScript charakteryzuje się silnym typowaniem i posiada kompilator, który zgłasza błędy, jeśli nie zdefiniujemy typu zmiennej.
Zarówno JavaScript, jak i TypeScript są zgodne ze specyfikacjami ECMAScript. Typescript potrafi uruchomić cały kod napisany w JavaScripcie i współpracuje z jego bibliotekami – dlatego też nazywany jest nadzbiorem JavaScript.
Instalacja TypeScript
Aby uruchomić poprzedni kod w TypeScript, należy najpierw zainstalować kompilator TypeScript za pomocą menedżera pakietów npm (jeśli masz zainstalowane node.js):
npm install -g typescript
Możesz też pobrać go bezpośrednio ze strony Microsoft: Strona pobierania. Alternatywnie możesz użyć TS plac zabaw, aby zobaczyć jak kod TS jest transpilowany do JS.
Po wykonaniu instalacji, możesz ustawić konfigurację projektu w pliku tsconfig.json i użyć dowolnego IDE lub edytora tekstu, aby napisać kod w TypeScript i zapisać go z rozszerzeniem .ts.
Możesz nadal nie definiować typu zmiennej, a TypeScript spróbuje go wydedukować. Natomiast w przypadku, gdy do zmiennej „feeling” przypiszemy wartość innego typu, niż ten który został użyty przy pierwszej inicjalizacji (w naszym przypadku String) kompilator zgłosi błąd.
Dla przejrzystości i łatwiejszej konserwacji kodu zaleca się jednak stosowanie adnotacji typu:
var feeling: string = "happy";
To jednak nie wszystko!
TypeScript posiada szereg innych funkcji ułatwiających pracę programistom.
Charakterystyczne cechy TypeScript
TypeScript oferuje szeroki wachlarz funkcji, a każda nowa wersja wzbogacana jest o kolejne udogodnienia. Na przykład w wersji 4.0 dodano m.in. typy krotek wariadycznych, niestandardowe fabryki JSX, wnioskowanie właściwości klas z konstruktorów. Do ważnych cech TypeScript należą:
- Wsparcie dla koncepcji programowania obiektowego, takich jak interfejsy, dziedziczenie, klasy i generyki.
- Wczesne wykrywanie błędów.
- Wsparcie IDE poprzez sprawdzanie składni i podpowiedzi.
- Łatwiejsze debugowanie na etapie pisania kodu.
- Transpilacja do JavaScript.
- Stosowany zarówno w aplikacjach po stronie serwera, jak i klienta.
- Obsługa wielu platform i przeglądarek.
- Obsługa wszystkich bibliotek i rozszerzeń JS.
Dlaczego potrzebujemy TypeScript? (Przewaga TypeScript nad JavaScript)
Microsoft przez dwa lata używał TypeScript w swoich wewnętrznych projektach, zanim udostępnił go publicznie w 2012 roku. Stworzono typowany JavaScript, aby łatwiej testować kod w aplikacjach korporacyjnych klasy produkcyjnej. Możesz nadal wykorzystywać zalety dynamicznego typowania, ale też jawnie określać typ zmiennej, kiedy jest to naprawdę potrzebne.
Rozważmy poniższy kod:
var mynum = //pobierz od użytkownika; addten(number){ return number + 10; }
Oczekujemy, że wynik zawsze będzie liczbą. Co jednak jeśli użytkownik poda wartość „owca”? Otrzymamy wynik „owca10” – idealnie byłoby, gdybyśmy poinformowali użytkownika, że ta operacja jest niemożliwa!
Ponadto, gdy mamy do dyspozycji informacje o typie, edytory tekstu i IDE są znacznie bardziej użyteczne i pomagają w uniknięciu błędów w czasie wykonywania. Refaktoryzacja kodu w późniejszym czasie staje się łatwiejsza.
Czy to oznacza, że nie potrzebujemy JavaScript? (Wady TypeScript w porównaniu z JavaScript)
TypeScript można traktować jako rozszerzenie JavaScript, ale na pewno nie jako jego zamiennik.
W przypadku mniejszych fragmentów kodu użycie TypeScript może być zbędnym obciążeniem – instalacja, kompilacja i transpilacja będzie niepotrzebna. W przypadku JavaScript, możesz po prostu umieścić swój skrypt w pliku HTML i od razu zacząć działać. Debugowanie kodu jest łatwiejsze, ponieważ po wprowadzeniu zmian wystarczy odświeżyć przeglądarkę.
Bezpośrednie porównanie
Teraz, gdy znamy już cechy i zalety zarówno TypeScript, jak i JavaScript, przejdźmy do bardziej szczegółowego porównania:
TypeScript
JavaScript
Język z typowaniem, który pozwala na wczesne wykrywanie błędów kompilacji.
Błędy mogą pojawiać się dopiero w trakcie działania aplikacji.
Idealny do dużych projektów, ponieważ zwiększa czytelność i ułatwia konserwację kodu.
W miarę wzrostu projektu, testowanie i debugowanie staje się trudniejsze – stąd JS jest bardziej odpowiedni do mniejszych projektów.
Nadzbiór JS, tzn. ma wbudowane funkcje takie jak programowanie obiektowe, sprawdzanie typu i inne.
Język skryptowy używany do dynamicznego generowania treści internetowych.
Wymaga instalacji i konfiguracji kompilatora.
Nie wymaga instalacji; kod JS można umieścić bezpośrednio w przeglądarce w znaczniku <script>.
Pliki .ts przed wykonaniem są zamieniane na pliki .js w procesie zwanym transpilacją.
Pliki .js mogą być dołączane bezpośrednio do plików HTML i uruchamiane za pomocą znacznika <src>.
Potężny i bogaty w funkcje, takie jak moduły, generyki, interfejsy.
Odpowiedni do prostych aplikacji internetowych, które nie wymagają zaawansowanych funkcji.
Używany do skryptów po stronie serwera i klienta.
Łatwy w obsłudze po stronie klienta, ale staje się ciężki i złożony w przypadku skryptów po stronie serwera.
Wykonanie wymaga czasu ze względu na proces kompilacji.
Nie wymaga kompilacji, co przyspiesza wykonanie.
Obsługuje zarówno typowanie statyczne, jak i dynamiczne.
Obsługuje tylko typowanie dynamiczne.
Adnotację typu możemy zdefiniować w następujący sposób:
var feeling: string = „happy”;
Nie możemy zdefiniować adnotacji typu, ponieważ typy nie są określane.
Podsumowanie
Jeśli chodzi o naukę, JavaScript może być naturalnym wyborem. Otwierasz plik, wpisujesz kod w znacznikach <script></script>, zapisujesz jako HTML i widzisz rezultat! Następnie możesz rozbudowywać swoją wiedzę, aby tworzyć bardziej dynamiczne treści.
Co więcej, jeśli pracujesz nad dużymi projektami, znajomość JavaScript ułatwi Ci naukę TypeScript.
Natomiast z perspektywy kariery i zarobków, jako programista TypeScript, będziesz bardziej elastyczny i komfortowo będziesz czuł się zarówno w projektach JS, jak i TS – dzięki czemu będziesz bardziej wartościowym pracownikiem. Zazwyczaj programiści TypeScript zarabiają od 110 000 do 147 000 USD rocznie, podczas gdy programiści JS otrzymują wynagrodzenie w przedziale 63 000 do 118 000 USD rocznie.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.