TypeScript

Nadzbiór JavaScriptu dodający statyczne typowanie. Kod kompiluje się do zwykłego JavaScriptu, a typy pomagają wychwytywać błędy przed uruchomieniem.

TypeScript to nadzbiór (superset) JavaScriptu stworzony przez Microsoft, który dokłada do języka statyczne typowanie. W praktyce oznacza to, że każdy poprawny kod JavaScript jest też poprawnym TypeScriptem, ale dochodzą adnotacje typów — informujesz kompilator, że userId to number, a name to string. Sam TypeScript nie uruchamia się w przeglądarce ani w Node.js: jest kompilowany (a właściwie transpilowany) do zwykłego JavaScriptu, a typy znikają. Ich rola kończy się w momencie, gdy złapią błąd zanim kod w ogóle ruszy.

Jak to działa i po co

Piszesz pliki z rozszerzeniem .ts (albo .tsx dla Reacta), a kompilator tsc sprawdza, czy typy się zgadzają, i wypluwa czysty JS. Jeśli próbujesz wywołać .toUpperCase() na liczbie albo przekazać funkcji o jeden argument za mało, dostajesz czerwony błąd już w edytorze — nie o trzeciej w nocy na produkcji. To przesuwa wykrywanie pomyłek z etapu działania programu na etap pisania.

Drugi, często niedoceniany zysk to podpowiedzi w edytorze. Dzięki typom VS Code wie, jakie pola ma obiekt, i autouzupełnia je za Ciebie. Typy działają więc jak żywa dokumentacja, która nie kłamie, bo kompilator jej pilnuje.

Przykład z praktyki

Załóżmy prostą funkcję:

function powitaj(user: { name: string; age: number }) { return `Cześć ${user.name}, masz ${user.age} lat`; }

Gdy wywołasz ją bez age albo wpiszesz wiek jako tekst, TypeScript od razu zaprotestuje. Projekt zwykle zaczynasz od npm install -D typescript i npx tsc --init, co tworzy plik tsconfig.json ze wszystkimi ustawieniami kompilatora. Potem npx tsc kompiluje całość. W realnych projektach typowy build zostawia się jednak narzędziom jak Vite, esbuild czy Next.js, które robią to szybciej.

Częste błędy i mity

  • „TypeScript chroni w czasie działania” — nie. Typy znikają po kompilacji. Dane z API i tak musisz walidować ręcznie (np. biblioteką Zod).
  • Nadużywanie any — wpisanie any wyłącza sprawdzanie typów dla danej wartości. To jak kupić alarm i go nie włączać. Włącz strict: true w konfiguracji.
  • Mylenie z osobnym językiem — to wciąż JavaScript, tylko z dopiskami. Nie musisz uczyć się go od zera.

Pojęcia powiązane: JavaScript, transpilacja, statyczne typowanie, interface, generics, tsconfig.json, ESLint, Zod, Babel.