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— wpisanieanywyłącza sprawdzanie typów dla danej wartości. To jak kupić alarm i go nie włączać. Włączstrict: truew 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.