Book: TypeScript Essentials — From Working Developer to Confident TS, Across Node, Bun, Deno, and the Browser Also by me: The TypeScript Library — the 5-book collection My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools Me: xgabriel.com | GitHub A team I talked to last month had a query helper that took three different shapes: a single ID, a list of IDs, or a filter object. The function had been written with overloads. Three declared signatures, one implementation signature underneath. It shipped fine. The bug arrived two months later, in a wrapper someone built to add caching: the wrapper used Parameters<typeof query> to mirror the input. The cache thought query only accepted a filter object. The list-of-IDs path silently lost its types. Every cached call to that branch was typed as unknown . Nobody had touched the original function. The overloads still read fine in the editor. Every call site still showed the right hint.…