Valg af TypeScript frem for JavaScript til nye services
Kontekst
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.
Beslutning
Indføre TypeScript som standard for alle nye backend-services
Overvejede alternativer
Fortsætte med JavaScript og JSDoc-kommentarer
- Intet build-trin nødvendigt
- Teamet er allerede fortrolig med JavaScript
- Hurtigere indledende udvikling
- 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
- Gradvis indførelse reducerer indlæringskurven
- Man kan evaluere fordelene før fuld forpligtelse
- Inkonsistent kodebase gør kontekstskift sværere
- Delte biblioteker bliver problematiske
- Løser ikke refaktoreringsproblemet for JS-services
Begrundelse
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:
- Startede kun med nye services
- Oprettede fælles TypeScript-biblioteker til gennemgående mønstre
- Tilbød teamtræning og pair programming-sessioner
- 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.