Preskočiť na obsah
Programovací jazyk

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á.

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ť.