Book: The TypeScript Type System — From Generics to DSL-Level Types 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 backend engineer on a team I work with opened a TypeScript 5.4 upgrade PR for a NestJS service. The build was green. Tests passed. The container booted in staging the way it always did. Then someone deleted experimentalDecorators from tsconfig.json because the flag looked deprecated in their editor's tsconfig hint, and the same service stopped resolving @Body() parameters, validators silently passed, and the DI container booted with half the providers it expected. The fix was one line. Put the flag back. The reason it broke is the thing this post is about. TypeScript shipped two different decorator features under the same syntax, they have incompatible call shapes, and the framework on your desk almost certainly depends on the older one.…