TypeScript – z czym to się je?

TypeScript staje się coraz bardziej popularny w środowisku web developerów oraz coraz więcej firm decyduje się na rozwijanie swoich projektów z wykorzystaniem tego właśnie języka.

Nie dziwi więc, ze w głowach wielu ludzi rodzą się pytania czym TypeScript tak właściwie jest i „komu to potrzebne”.

TypeScript jest obiektowym językiem programowanie tworzonym w modelu open source, wydanym w 2012 roku przez firmę Microsoft. Podobieństwo nazw z JavaScriptem nie jest tutaj przypadkowe – TypeScript kompiluje się do czystego JavaScriptu. Co więcej, każdy poprawnie napisany kod w JavaScipcie będzie działał w środowisku TypeScripta. Okej, zapytacie więc, jaka jest różnica? Jedne z najbardziej istotnych – statyczne opcjonalne typowanie oraz programowanie obiektowe.

O co chodzi z tym statycznym typowaniem?


Żeby zrozumieć różnicę, wróćmy na chwilę do JavaScriptu. Typowanie w JavaScripcie jest trochę jak kobieta, może się zmieniać. Co mam na myśli? Załóżmy, że nasza zmienna „a” która na początku wykonywania programu była zmienna liczbową w międzyczasie zmieni się w stringa bez żadnego błędu lub ostrzeżenia. Możesz sobie pomyśleć – Michał, ale o co Ci chodzi, mniej pisania. Z jednej strony tak ale z drugiej tego typu sytuacje prowadzą do bałaganu i niekiedy ciężkich do wykrycia błędów, szczególnie w dużych projektach.

TypeScript zachowuję się za to jak dobry wujek Mietek – pomoże w potrzebie i jest stały w przekonaniach. TypeScript używa statycznego typowania więc przy chęci zmiany typu danych ostrzeże nas błędem. Co ciekawe, dany kod zostanie wykonany do końca (ponieważ jak wspomniałem wcześniej, kod napisany w TS tłumaczony jest do JS). Typowanie jest opcjonalne, zmienne mogą zostać zainicjowane jako typ any wtedy możemy przypisać do nich dowolny typ lub bez określenia typu (wtedy automatycznie zostanie przydzielony any).

Zobaczmy jak to wygląda w praktyce:

let a = 10;
a = 'teen';

console.log(a); // teen

Podczas kompilacja powyższego kodu otrzymamy błąd: type '”teen”’ is not assignable to type 'number’. Mimo tego, kod się wykona a w konsoli wyświetli się wartość teen.

Coś jeszcze?


Obiektowość, w TypeScripcie możemy zauważyć inne podejście do tematu niż w JavaScripcie. Do wykorzystania mamy (w TS’ie) klasy, interfejsy, konstruktory, czyli elementy znane nam z innych języków obiektowych.

Co prawda ECMAScript 6 nazywany również ECMAScript 2015 wprowadził niektóre z wymienionych powyżej funkcji także do JavaScriptu jednak nie wszystkie – np. klasy abstrakcyjne i modyfikatory dostępu są nadal niedostępna w JS’ie.

A ty znasz jeszcze jakieś różnice pomiędzy TypeSciptem a JavaScriptem lub uważasz, że jeszcze jakaś ważna funkcjonalność powinna zostać tutaj przedstawiona? Jeśli tak, daj znać w komentarzach 🙂