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). Pre produkčné projekty je rozumné začínať so strict mode od prvého dňa.
Z našej praxe
TypeScript sa oplatí používať naprieč celým stackom — frontend, backend, databázová vrstva, zdieľané kontrakty aj CLI nástroje. Jeden jazyk od UI po databázu umožňuje zdieľať typy naprieč celou aplikáciou bez generovania kódu. V projektoch s komplexným dátovým modelom — multi-currency, komplexné integrácie, viacvrstvové workflow — by JavaScript bez typov znamenal systematické runtime chyby. TypeScript strict mode v kombinácii s Zod validáciou vstupov tvorí bezpečnostnú sieť, ktorá zachytáva väčšinu chýb skôr, než sa dostanú do produkcie.
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 čítať hromady komentárov
Najčastejšie otázky
Aký je rozdiel medzi TypeScriptom a JavaScriptom?
JavaScript je dynamicky typovaný — premenné nemajú pevný typ a typové chyby sa prejavia až za behu, často až u používateľa. TypeScript pridáva statický typový systém: kompilátor overí konzistentnosť typov pri písaní kódu a odmietne zostaviť kód s typovými chybami. Celý platný JavaScript je zároveň platný TypeScript, takže existujúci projekt sa dá migrovať postupne, súbor po súbore.
Je TypeScript pomalší ako JavaScript?
Nie. 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 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?
Nie. TypeScript umožňuje postupný prístup — neznáme typy môžete dočasne označiť ako unknown alebo any a doplniť neskôr. V strict mode je any stále 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 aj pre malý projekt?
Áno. Nastavenie trvá pár minút a typová kontrola vám zadarmo dáva IntelliSense v editore, zachytávanie preklepov a upozornenia na null/undefined. Aj pre projekt jedného vývojára sa oplatí — budúci vy, ktorý sa o tri mesiace vracia k projektu, ocení typy ako živú dokumentáciu.
Kedy TypeScript nemá zmysel?
Pri jednorazových skriptoch a krátkych experimentoch, ktoré sa raz spustia a zahodia, je réžia okolo typov väčšia ako úžitok — tam stačí obyčajný JavaScript alebo Python. Pri čomkoľvek, čo má bežať dlhšie ako pár dní alebo na čom bude pracovať viac ľudí, sa TypeScript vyplatí. A tá hranica je nižšie, ako väčšina ľudí čaká.
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.
React
React je open-source JavaScript knižnica od Meta, ktorá zaviedla komponentový model tvorby používateľských rozhraní — UI sa skladá z malých, opakovane použiteľných blokov, každý s vlastným stavom a logikou.
Next.js
Next.js je open-source React framework od Vercel, ktorý dodáva produkčne pripravené riešenia pre routing, server-side rendering, optimalizáciu výkonu a deployment — všetko, čo holý React neobsahuje.
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ť.