Hoppa till innehåll
Fullstack & WebbTypeScriptArkitekturFullstack-arkitektur13 min läsning

TypeScript-arkitektur för team på 3–30 utvecklare

Hur du strukturerar en TypeScript-kodbas så att den tål att fler människor rör den samtidigt.

4 februari 2026Uppdaterad 10:00
00
TypeScript-arkitektur för team på 3–30 utvecklare
Bra arkitektur handlar mindre om mappar och mer om var beroendena får peka.Photo: Unsplash

Strukturera din TypeScript-kodbas för 3–30 utvecklare.

En TypeScript-kodbas som tre personer skrev över en helg kan vara helt funktionell och samtidigt omöjlig att växa i. Skillnaden mellan en kodbas som tål tre utvecklare och en som tål trettio handlar sällan om vilka bibliotek man valt - den handlar om var gränserna går, vem som äger vad, och om typerna är till hjälp eller bara dekoration. Jag har varit teknisk rådgivare åt team i hela det spannet, och samma principer återkommer oavsett storlek.

Strict mode är inte förhandlingsbart

Det första jag tittar på i en ny kodbas är tsconfig. Om strict inte är påslaget är resten av arkitekturdiskussionen sekundär, för då ger typsystemet er falsk trygghet. Strict mode med strictNullChecks fångar hela klasser av fel innan de når produktion. Att slå på det i en stor befintlig kodbas är jobbigt, men det är en engångskostnad mot en löpande intäkt i färre buggar. Inför det stegvis, fil för fil om det behövs, men inför det.

Organisera efter domän, inte efter teknisk typ

Den vanligaste strukturen jag ärver är mappar som heter components, hooks, utils och services - allt grupperat efter vad det är tekniskt. Det fungerar tills kodbasen växer, och då blir det omöjligt att överblicka en funktion eftersom den är utspridd över sex mappar. Bättre är att gruppera efter domän: allt som rör fakturering ligger tillsammans, allt som rör kunder ligger tillsammans. Inom varje domän får du gärna ha components och hooks, men domänen är den yttre indelningen.

Det här blir avgörande när teamet växer, för då kan ett team äga en domän utan att ständigt krocka med andra. Det är en av de viktigaste sakerna jag hjälper team att lägga om inom fullstack-arkitektur.

Låt beroenden peka åt ett håll

Den enskilt viktigaste regeln för en kodbas som ska skala: beroenden ska peka inåt, mot kärnan. Din affärslogik ska inte importera från ditt UI-lager eller från en specifik databasklient. När domänlogiken är fri från ramverksberoenden kan du byta databas, byta UI-bibliotek eller testa logiken isolerat utan att allt rasar. Cirkulära beroenden är en tydlig varningssignal - de betyder att gränserna har suddats ut.

Typer som kontrakt, inte som efterhandskonstruktion

I välfungerande kodbaser är typerna källan till sanning. Definiera era domänobjekt en gång och härled allt annat från dem. Undvik att sprida "any" - varje any är ett hål i skyddet. Och utnyttja TypeScripts verkliga styrka: gör ogiltiga tillstånd omöjliga att uttrycka. En diskriminerad union som tvingar fram att ett laddningstillstånd antingen har data eller ett fel, aldrig båda, eliminerar en hel kategori av buggar vid kompilering istället för i produktion.

Validera vid systemets gränser

TypeScript försvinner vid körning. Data som kommer utifrån - API-svar, formulär, miljövariabler - är inte att lita på bara för att du gett den en typ. Vid varje yttre gräns validerar jag med ett schema-bibliotek som Zod, så att den otypade omvärlden förvandlas till betrodd, typad data på ett ställe. Innanför den gränsen kan resten av koden lita på sina typer.

Verktyg som håller stilen enhetlig automatiskt

Med trettio utvecklare kan ni inte diskutera kodstil i varje granskning. ESLint, en formaterare som Prettier eller Biome, och en CI som vägrar släppa igenom kod som bryter mot reglerna tar bort tjafset. Lägg energin i granskningarna på arkitektur och logik istället - det är där människor tillför värde. Hur ett sådant upplägg ser ut i praktiken visar jag i kundcase.

Relaterat

Vill du ta det vidare?

Jag hjälper växande team att lägga om sin TypeScript-arkitektur innan den blir en flaskhals - domängränser, typkontrakt och CI som håller kvaliteten. Boka ett samtal så tittar vi på er kodbas.

Skillnaden mellan en kodbas som tål tre utvecklare och en som tål trettio handlar om var gränserna går - inte om vilka bibliotek man valt.

- Simon Axelsson

Vanliga frågor

Hur inför vi strict mode i en stor befintlig kodbas?
Stegvis. Slå på de strikta flaggorna en i taget eller använd verktyg som tillåter strikt läge per fil, och beta av kodbasen modul för modul. Det är en engångskostnad som betalar tillbaka sig i färre nullrelaterade buggar, så undvik att skjuta upp det i oändlighet.
Mappar per domän eller per teknisk typ?
Per domän när kodbasen och teamet växer. Teknisk gruppering (components, hooks, utils) fungerar för små projekt men sprider varje funktion över många mappar när det blir större. Domängruppering håller relaterad kod samlad och låter team äga avgränsade delar.
Behöver vi Zod om vi redan har TypeScript?
Ja, för data som kommer utifrån. TypeScript existerar bara vid kompilering och försvinner vid körning, så API-svar och formulärdata kan ha fel form trots sina typer. Ett schema-bibliotek validerar vid gränsen och förvandlar otypad indata till betrodd, typad data.
Simon Axelsson
Simon AxelssonIT-konsult & teknisk rådgivare

Simon Axelsson är senior IT-konsult och grundare av SIAX Technology AB. Han hjälper nordiska företag med molninfrastruktur, dataplattformar och AI-automation.

Fler artiklar