TypeScript to JavaScript z typami. Brzmi jak drobny dodatek, ale zmienia jakość pracy z kodem w sposób, który doceniasz tym bardziej, im większy i bardziej długoterminowy jest projekt.
Co daje statyczne typowanie
W JavaScript funkcja może przyjąć cokolwiek jako argument i nikomu to nie przeszkadza podczas kompilacji. Błąd pojawia się w runtime, gdy użytkownik natrafi na problem. W TypeScript definiujesz typy argumentów i zwracanych wartości. Edytor i kompilator informują o błędzie zanim uruchomisz kod. Dla dużych projektów, gdzie kod dotykają dziesiątki osób, to ogromna różnica.
Autocompletion i dokumentacja w kodzie
Typy TypeScript to jednocześnie dokumentacja dla edytora. Gdy wpisujesz nazwę obiektu i stawiasz kropkę, edytor pokazuje dostępne właściwości i metody z ich typami. W JavaScript bez TypeScript otrzymujesz mniej lub nic zależnie od konfiguracji. To przekłada się na szybszą pracę i mniej zaglądania do dokumentacji.
Refactoring z pewnością
Zmiana nazwy metody lub struktury obiektu w dużym projekcie JavaScript to loteria: może uda ci się znaleźć wszystkie użycia, może nie. W TypeScript kompilator wskazuje wszystkie miejsca, które przestały pasować do zmienionych typów. Refactoring staje się bezpieczniejszą operacją.
Migracja z JavaScript
TypeScript jest w pełni kompatybilny z JavaScript - możesz zacząć od zmiany rozszerzenia pliku na .ts i stopniowo dodawać typy. Nie musisz przepisywać projektu od zera. Tryb strict w konfiguracji TypeScript można włączać etapami, dając sobie czas na dodanie typów do istniejącego kodu.
Ekosystem
React, Vue, Angular i Next.js mają doskonałe wsparcie dla TypeScript. Większość popularnych bibliotek npm dostarcza definicje typów albo w pakiecie głównym albo przez @types/. TypeScript jest dziś standardem w nowoczesnych projektach frontendowych, nie opcją dla entuzjastów.
Kiedy to ma mniej sensu
Prosty skrypt działający na jednej stronie, projekt na kilka dni, prototyp - dla tych przypadków overhead konfiguracji TypeScript nie zwraca się. TypeScript wyraźnie zysk przy projektach długoterminowych z kilkoma programistami i złożoną logiką po stronie klienta.