Valg af TypeScript frem for JavaScript til nye services

architecturetypescriptdeveloper-experience

Vores team gik i gang med udvikling af en ny række mikroservices. Vi skulle beslutte, om vi ville bruge TypeScript eller JavaScript til kodebasen.

Indføre TypeScript som standard for alle nye backend-services

Fortsætte med JavaScript og JSDoc-kommentarer

Fordele
  • Intet build-trin nødvendigt
  • Teamet er allerede fortrolig med JavaScript
  • Hurtigere indledende udvikling
Ulemper
  • JSDoc-kommentarer håndhæves ikke
  • Begrænset IDE-understøttelse sammenlignet med TypeScript
  • Refaktorering er mere risikabel uden typesikkerhed

Kun bruge TypeScript til kritiske services

Fordele
  • Gradvis indførelse reducerer indlæringskurven
  • Man kan evaluere fordelene før fuld forpligtelse
Ulemper
  • Inkonsistent kodebase gør kontekstskift sværere
  • Delte biblioteker bliver problematiske
  • Løser ikke refaktoreringsproblemet for JS-services

TypeScripts statiske typning fanger fejl ved kompilering i stedet for ved kørsel, hvilket er særligt værdifuldt for mikroservices, hvor integrationsproblemer er almindelige. Den indledende investering i at lære TypeScript betaler sig gennem øget tillid til refaktorering, bedre IDE-understøttelse og færre produktionsfejl. Overheadet ved build-trinnet er minimalt med moderne værktøjer.

Kontekst og baggrund

Vi havde brugt JavaScript til vores backend-services i 3 år. Det fungerede godt i starten, men efterhånden som kodebasen voksede, opstod der problemer:

  • Refaktorering var risikabel og tidskrævende
  • Integrationsfejl mellem services var almindelige
  • Nye teammedlemmer havde svært ved at forstå API-kontrakter
  • IDE-autofuldførelse var upålidelig

Implementering

Vi indførte TypeScript gradvist:

  1. Startede kun med nye services
  2. Oprettede fælles TypeScript-biblioteker til gennemgående mønstre
  3. Tilbød teamtræning og pair programming-sessioner
  4. Opdaterede vores servicetemplate til som standard at bruge TypeScript

Resultater efter 6 måneder

  • 40 % reduktion i produktionsfejl relateret til typefejl
  • Refaktoreringstid halveret
  • Nye udviklere rapporterer hurtigere onboarding
  • Teamets tilfredshed med værktøjerne steg markant

Beslutningen har vist sig succesfuld, og vi overvejer nu at migrere eksisterende JavaScript-services til TypeScript.