TypeScript satisfies: The Type Casts I Finally Stopped Writing
I hid a runtime bug behind an as cast for three weeks. Here's how TypeScript's satisfies operator checks objects without widening them, and when to…
I hid a runtime bug behind an as cast for three weeks. Here's how TypeScript's satisfies operator checks objects without widening them, and when to…
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,…