TypeScript 5.5 — The Features That Actually Matter for Production Code TypeScript 5.5 introduces several practical improvements for production code, including automatic inference of type predicates from function implementations (eliminating the need for explicit `v is Type` annotations in filter callbacks) and compile-time validation of regular expressions to catch syntax errors and invalid escape sequences. The update also enhances discriminated union narrowing in array filters, adopts the new `import ... with` syntax for module attributes (deprecating `assert`), and delivers meaningful build speed improvements for large codebases. TypeScript 5.5: The Features That Actually Matter for Production Code TypeScript 5.5 shipped with a mix of headline features and subtle improvements that compound significantly in large codebases. After running it in production for months, here are the features that actually moved the needle for our team. The Big One: Inferred Type Predicates This sounds small but it's a massive DX improvement. TypeScript can now automatically infer type predicates from function implementations. Before 5.5: The Verbose Manual Fix // Before: TypeScript couldn't narrow the type function isString value: unknown : boolean { return typeof value === 'string'; } const values: string | number = 'hello', 42, 'world', 100 ; // You'd have to do this: const strings = values.filter v = { if isString v { return v; // TypeScript still thought v could be number } return false; } ; // Or this more explicit but verbose : const strings = values.filter v : v is string = isString v ; After 5.5: Automatic Inference // Now TypeScript infers the type predicate automatically function isString value: unknown : boolean { return typeof value === 'string'; } const values: string | number = 'hello', 42, 'world', 100 ; // TypeScript now correctly narrows inside the filter callback const strings = values.filter v = isString v ; // strings is correctly typed as string // Works with more complex predicates function isNonNullable