TypeScript's satisfies Operator: Type Safety Without Losing Inference

The satisfies operator shipped in TypeScript 4.9 and remains one of the most underused features in the language. Most codebases that could benefit from it are still reaching for type annotations — which widen types — or as assertions — which lie to the compiler. satisfies threads the needle: it validates that a value conforms to a type without changing what the compiler knows about that value's specific shape.

Understanding the distinction between validation and widening unlocks a class of patterns that make config objects, lookup tables, and registries genuinely safer and more expressive.