TypeScript Soup: Taming an Unruly API
One tiny helper, big payoff. Use template literal types to infer base fields from `nameFr` style keys, then `getLocalized(locale, obj, fields)` returns exactly what you asked for. No copy-paste, no string concat, typos blocked, locales centralized, fallbacks handled.
ESM vs CommonJS: History, Differences, and the Big Shift
You’ve likely seen multiple JavaScript module systems. Node.js built on CommonJS with require and module.exports. Browsers adopted ES modules using import and export. Today the ecosystem is shifting toward ESM, but CommonJS still holds strong in many projects.
Managing complexity: Shared business logic in Next.js (Part 1: Server-Side Architecture)
In Next.js 14+, structuring shared business logic through repositories, action functions, and standardized error handling cuts duplication and keeps API routes and Server Actions consistent. This layered approach boosts maintainability, type safety, and sleep quality.
Advanced Union Type Techniques in TypeScript — 05 Object Values with const Assertion
Const assertions in TypeScript lock values to their exact literal types and make them readonly, preventing accidental changes. Used strategically in configs, mappings, and critical state, they catch errors early, keep code predictable, and boost maintainability without unnecessary rigidity.
Advanced Union Type Techniques in TypeScript — 04 Extracting Types from Discriminated Unions
Discriminated unions use a shared property to let TypeScript narrow types automatically. From sorting messages to handling server errors, they boost clarity, IntelliSense, and safety, ensuring each variant is processed with the right properties and avoiding runtime surprises.
Advanced Union Type Techniques in TypeScript — 02 Excluding Types
The Exclude utility type in TypeScript filters out unwanted members from a union, leaving only the relevant ones. From hiding internal props to limiting event handlers or restricting state actions, Exclude keeps types precise, modular, and aligned with real-world usage.
TypeScript Error Handling: A Closer Look into Custom Error Objects
By re-creating errors from different sources with a consistent factory function, you can standardize formats, ensure predictable handling, and centralize customization. This pattern makes complex TypeScript apps easier to maintain and adapt as services and requirements evolve.
Asynchronous Operations and Error Handling in TypeScript
TypeScript strengthens async programming by making inputs, outputs, and errors explicit. From generics with discriminated unions to custom error classes and structured results, you can create predictable, maintainable async flows that work seamlessly in complex team projects
TypeScript Pattern 101: Basic Types and Interfaces
Dive deeper than string and number and unveil the power of TypeScript’s type system through custom types, generics, and type manipulation. This is where the richness of TypeScript’s type system truly shines, opening doors to more robust and self-explanatory code.
TypeScript Pattern 101: Type Guards
Type guards in TypeScript function as safety checks. They help ensure you’re dealing with the exact type you expect, making them invaluable for dealing with complex data structures or various types.