TypeScript
TypeScript je programovací jazyk od Microsoftu — JavaScript rozšírený o statický typový systém. Kompilátor overí, že funkcie dostávajú správne parametre a objekty majú správnu štruktúru ešte pred spustením kódu, čím zachytí celú triedu chýb, ktoré by inak objavil až používateľ v produkcii.
Ako to funguje
JavaScript je dynamicky typovaný jazyk — premenné nemajú pevný typ a chyby sa odhalia až za behu. Funkcia, ktorá čaká číslo, ticho dostane reťazec a vráti NaN. Objekt, z ktorého čítate vlastnosť, môže byť undefined. Tieto situácie nastávajú aj po rokoch vývoja, aj v projektech s testami. TypeScript tieto chyby zachytí pri písaní kódu: editor červeno podčiarkne problematické miesto a kompilátor odmietne zostaviť kód s typovými chybami.
Typový systém TypeScriptu je pozoruhodne expresívny. Okrem základných typov (string, number, boolean) podporuje union typy (hodnota môže byť string | null), generické typy (funkcia funguje pre ľubovoľný typ T), conditional typy, mapped typy a template literal typy. Praktický dôsledok: môžete presne opísať dátové štruktúry, API kontrakty, stavy aplikácie a vzťahy medzi nimi. TypeScript vás upozorní, ak zabudnete ošetriť prípad null, ak funkcia môže vrátiť undefined ktoré predávate ďalej bez kontroly, alebo ak pridáte nový prípad do union typu a zabudnete ho spracovať v switch statemente.
Rozhodujúca výhoda TypeScriptu v tímovom vývoji je živá dokumentácia. Typy opisujú, čo funkcia robí, čo prijíma a čo vracia — a na rozdiel od komentárov sú vždy aktuálne, lebo TypeScript vynúti ich konzistentnosť. Nový vývojár v projekte si prečíta typ a vie, s čím pracuje. Refaktorovanie je bezpečnejšie: zmeníte typ, kompilátor ukáže všetky miesta, ktoré treba aktualizovať.
TypeScript je nadradenou množinou JavaScriptu — každý validný JS je validný TS. Migrácia existujúceho projektu môže byť postupná: súbory sa premenujú z .js na .ts jeden po druhom, typy sa pridávajú inkrementálne. Kompilátor sa nastavuje cez tsconfig.json — prísnosť typovej kontroly sa dá stupňovať od benevolentnej (strict: false) po maximálnu (strict: true plus ďalšie vlajky). V Strange Loops používame strict mode vo všetkých projektoch.
Z našej praxe
V Strange Loops je TypeScript jediný jazyk, ktorý používame pre produkčný kód — frontend (React/Next.js 15/16), backend (Fastify), databázová vrstva (Drizzle ORM), zdieľané kontrakty (Zod schémy) aj nástroje (CLI skripty v Node.js). Jeden jazyk od UI po databázu umožňuje zdieľať typy naprieč celou aplikáciou bez generovania kódu. V projektoch ako QualiTravel, kde je dátový model komplexný (GDS integrácie, multi-currency, IATA konsolidácia), by JavaScript bez typov znamenal systematické runtime chyby. TypeScript strict mode v kombinácii s tRPC a Zod validáciou vstupov tvorí bezpečnostnú sieť, ktorá zachytáva väčšinu chýb skôr, než sa dostanú do CI pipeline.
Kedy to potrebujete
- Pracujete na väčšom projekte s viacerými vývojármi a chcete sa vyhnúť chybám z nesprávnych predpokladov o dátových štruktúrach
- Refaktorujete existujúci kód a potrebujete istotu, že zmena jednej časti nerozbíja iné časti systému
- Integrujete externé API (Stripe, GDS, banky) a chcete typovo bezpečné klientské knižnice, ktoré vás upozornia pri nesprávnom použití
- Onboardujete nového vývojára a chcete, aby typy slúžili ako živá dokumentácia bez nutnosti čítania hodiniek komentárov
Najčastejšie otázky
Je TypeScript pomalší ako JavaScript?
TypeScript sa kompiluje do JavaScriptu — v prehliadači alebo Node.js beží výsledný JS, nie TS. Typová kontrola prebieha len pri kompilácii a nemá vplyv na výkon za behu. Kompilácia samotná pridáva krok do buildu (sekundy až desiatky sekúnd podľa veľkosti projektu), ale pri inkrementálnych buildoch je tsc rýchly. Výkon produkčnej aplikácie je identický s čistým JavaScriptom.
Musím mať typy pre všetko?
TypeScript umožňuje postupný prístup — neznáme typy môžete dočasne označiť ako unknown alebo any a doplniť neskôr. Pri strict mode je any dovolené, ale každé jeho použitie je viditeľné a dá sa vyhľadať. V praxi odporúčame začať so strict mode od prvého dňa — je oveľa jednoduchšie písať typový kód od začiatku, ako pridávať typy do hotového projektu.
Oplatí sa TypeScript pre malý projekt?
Áno. Nastavenie TypeScriptu trvá päť minút, a typová kontrola vám zadarmo dáva intelisense v editore, zachytávanie preklepov a upozornenia na null/undefined. Aj pre projekt jedného vývojára sa TypeScript oplatí — budúci vy, ktorý sa o tri mesiace vracia k projektu, ocení typy ako živú dokumentáciu.
Súvisiace pojmy
tRPC
tRPC je framework, ktorý umožňuje volať serverové funkcie z frontendu s plnou typovou bezpečnosťou — bez generovania kódu, bez REST schém, bez manuálnej synchronizácie typov. TypeScript overí správnosť volania pri kompilácii.
API
API (Application Programming Interface) je formálne definované rozhranie, cez ktoré jeden softvér komunikuje s druhým. Webové API typicky prenáša dáta cez HTTP vo formáte JSON — klient pošle požiadavku, server vráti odpoveď, pričom ani jeden nemusí vedieť nič o vnútornej implementácii toho druhého.
Potrebujete s tým pomôcť?
Ak riešite niečo z toho, čo tu opisujeme, ozvite sa. Povieme vám, či a ako vieme pomôcť.