4. kolovoza 2026.
Prošli kvartal naslijedili smo JS codebase u kojem je jedna funkcija primala order objekt. Negdje uzvodno, prije šest mjeseci i tri developera ranije, netko je preimenovao order.total u order.amount. Stari kod je i dalje čitao order.total. JavaScript nije rekao ni riječi, undefined je tiho prošao kroz pola pipelinea i završio kao NaN na fakturi. Bug je otkrio kupac. U produkciji. Na iznosu.
To je cijela poanta ovog teksta u jednom paragrafu. Ali idemo redom.
Ako ste zadnjih par godina pratili State of JS ankete, trend nije suptilan. U posljednjem velikom presjeku najveća pojedinačna skupina developera nije ona koja piše "malo TS-a" ni "pola-pola", nego oni koji pišu 100% TypeScript. Skupina koja piše čisti JavaScript bez ijedne linije tipova svela se na manjinu. Na Stack Overflow anketama JavaScript i dalje drži prvo mjesto po korištenju, ali TypeScript se godinama penje prema vrhu i danas je jedan od najkorištenijih jezika uopće.
Prevedeno na ljudski: 2026. TypeScript više nije "napredna opcija" ni stvar ukusa. On je default. Novi Next.js, Nuxt, Vite, Angular, Deno, Bun, svi te dočekaju s .ts ekstenzijom bez pitanja. Kad je alat postao pretpostavka cijelog ekosustava, izbjegavanje istog nije neutralna odluka. To je trošak.
Nije riječ o ideologiji. Riječ je o računu koji netko na kraju plati.
Runtime bugovi koje kompajler hvata besplatno. Onaj order.total primjer nije egzotičan, to je najbanalniji tip greške koji postoji, i JavaScript je specijaliziran da ga pusti da prođe. S tipovima, to nije rasprava:
interface Order {
amount: number;
currency: "EUR" | "USD";
}
function formatInvoice(order: Order) {
// order.total -> Property 'total' does not exist on type 'Order'.
return `${order.amount.toFixed(2)} ${order.currency}`;
}
Greška se dogodi u editoru, prije commita, prije deploya, prije nego kupac vidi NaN. To je jeftin bug, najjeftiniji koji postoji. Bug u produkciji je najskuplji.
Sporiji onboarding. Kad novi developer otvori netipiziran JS projekt, funkcija processPayment(data, opts) mu ne govori ništa. Što je data? Koji ključevi postoje u opts? Odgovor je: čitaj cijeli codebase, grepaj po pozivima, ili pitaj nekoga tko odlazi za tri tjedna. S tipovima, potpis funkcije jest dokumentacija. Autocomplete zna sve. Novi čovjek je produktivan u danima umjesto tjednima, a onboarding je čisti trošak dok traje.
Teže održavanje. Softver se ne piše jednom. Živi godinama, mijenja ga desetak ljudi, i svaka izmjena je oklada da nešto drugo neće puknuti. U JS-u ta oklada je slijepa. U TS-u je kompajler taj koji vam kaže gdje ste zaboravili posljedicu.
Skuplji refactoring. Ovo je stavka gdje razlika postaje dramatična. Preimenujte polje u velikom TS projektu i editor vam u sekundi pokaže svih 47 mjesta koja treba dirati. U netipiziranom JS-u isti refactor je grep, molitva i regresijski bugovi koje otkrijete tjedan dana kasnije. Timovi izbjegavaju refactoring u JS-u upravo zato što je rizičan, pa kod trune, tehnički dug raste, a "prepravit ćemo to kasnije" postane "nitko se ne usudi to dirati".
Najčešći prigovor. I djelomično je pošten, u prvom tjednu. Postoji trošak postavljanja, trošak učenja generika i utility tipova, trošak @types paketa za starije biblioteke. To je stvarno.
Ali to je jednokratni trošak koji plaćate unaprijed, a naplaćuje se svaki sljedeći mjesec održavanja. Svaki tim koji je prošao kroz to isto ima istu priču: prvih par tjedana je trenje, a onda se više ne vraćaju. Ne zato što je moderno, nego zato što kompajler radi posao koji bi inače radio čovjek, sporije i s greškama.
Postoji i realna sredina koju ne treba prešutjeti. Ne mora sve biti strict: true od prvog dana. Postupna migracija (allowJs, pa datoteka po datoteka, pa pooštravanje pravila) legitimna je strategija za legacy codebase. TypeScript vas ne prisiljava na skok naglavce. Ali "krenut ćemo jednog dana" i "nikad" u praksi izgledaju identično.
NaN-ova na fakturama, koliko sporih onboardinga i koliko refactora kojih se svi boje planirate platiti prije nego prihvatite ono što je već postalo default.Povezano:
Naslijedili ste netipiziran codebase i ne znate odakle biste počeli s migracijom? Ili gradite nešto novo i želite to napraviti kako treba iz prvog pokušaja? Javite nam se, to je posao koji radimo.

Kastav
+385 95 908 3522