Vi kräver TypeScript på alla våra projekt. Alltid. Utan undantag. Det har inte alltid varit så – för fem år sedan var det fortfarande en diskussion om det var "värt komplexiteten". Den diskussionen är avgjord.
Vad TypeScript faktiskt gör
TypeScript är ett superset av JavaScript som lägger till statisk typning. Det kompileras ned till vanlig JavaScript och körs på samma sätt. Skillnaden är vad som händer innan körning:
Det viktigaste: TypeScript fångar en stor andel av de buggar som annars hittas i produktion – och som kostar mångdubbelt mer att åtgärda där.
Konkret exempel: null-säkerhet
En av de vanligaste orsakerna till JavaScript-buggar: "Cannot read property 'X' of undefined". TypeScript med strict mode tvingar dig att hantera null och undefined explicit.
// JavaScript – kraschar om user är undefined
const name = user.profile.name;
// TypeScript – kompilatorn tvingar dig att hantera fallet
const name = user?.profile?.name ?? "Okänd användare";Det låter enkelt, men i en stor kodbas med hundratals ställen där data kan vara undefined är detta ovärderligt.
API-kontrakt som aldrig ljuger
Med tRPC och Zod kan vi definiera API-kontrakter som är korrekt typade i hela stacken:
// Server
const createOrder = router.mutation({
input: z.object({
productId: z.string().uuid(),
quantity: z.number().positive(),
}),
handler: async ({ input }) => {
// input.productId är garanterat en UUID
// input.quantity är garanterat ett positivt tal
return await db.order.create({ data: input });
},
});
// Client – full autocomplete och typkontroll
const result = await trpc.createOrder.mutate({
productId: "abc-123", // TypeScript-fel om inte UUID-format
quantity: 2,
});Om vi ändrar API:et på servern flaggar TypeScript omedelbart alla ställen i frontend-koden som påverkas. Vi kan refaktorera tryggt.
ROI-argument för affärsbeslut
Vi förstår att tekniska argument inte alltid är det som avgör. Låt oss sätta det i affärsterm:
Nackdelarna – för att vara ärliga
TypeScript har nackdelar:
Men ingen av dessa nackdelar är i närheten av de fördelar TypeScript ger i ett projekt med mer än ett par veckors livstid.
Vår rekommendation
Starta alltid med TypeScript i strict mode. Ja, det känns som merarbete i början. Nej, du kommer aldrig ångra det.
Om du har ett befintligt JavaScript-projekt hjälper vi gärna till med en gradvis migrering – man behöver inte migrera allt på en gång.