TypeScript Branded Types: The ID Mix-Ups I Finally Stopped Shipping
TypeScript is structural, which is fine until two strings mean different things. Here is the branded types pattern I use to stop shipping ID mix-ups.
TypeScript is structural, which is fine until two strings mean different things. Here is the branded types pattern I use to stop shipping ID mix-ups.
I switched a Next.js app from Prisma to Drizzle last spring. Here's how I now pick between the two TypeScript ORMs on real serverless projects.
Why tRPC v11 has become my default for small-team TypeScript apps, what a procedure actually looks like, and where I still write plain REST handlers.
TypeScript types vanish at runtime, which is how bad API and form data slips through. Here's how I use Zod to validate at the edges…
How I actually use TypeScript's satisfies operator in real code, where it beats type annotations and as casts, and the two places I still don't…
Stage 3 decorators in TypeScript 5+ are finally something I use without flinching. Here is when they earn their keep, and four times I still…
Valibot's bundle size win is real, but switching from Zod cost me more than I expected. Here's what I migrated, what I didn't, and why…
Honest take on Drizzle vs Prisma after running both in production. When I switched my Next.js project, when Prisma still wins, and what tripped me…
I shipped a refund bug that branded types would have caught. Here is how I use TypeScript branded types for IDs, money, and validated input,…