🌐
Javascript-conference
javascript-conference.com › home › typescript 5: new innovations & breaking changes
TypeScript 5: New Innovations & Breaking Changes | iJS Conference Blog
May 20, 2025 - For example, there was an improvement in the handling of enums, which ensures that all enum values also get their own type (all enums are now “union enums”). This solves some open bugs in TypeScript related to special enums whose values ...
🌐
Codetain
codetain.com › blog › upgrading-typescript-in-your-project-from-4-to-5
Upgrading Typescript in your project from 4 to 5 | Codetain - end-to-end software development
March 12, 2024 - In many cases, they are on particular versions due to specific reasons like breaking changes which don’t allow to easily bump versions, in other cases it is because developers sadly just don’t care about being up to date. One package which definitely should be always up to date is Typescript.
🌐
TypeScript
typescriptlang.org › docs › handbook › release-notes › typescript-4-5.html
TypeScript: Documentation - TypeScript 4.5
TypeScript 4.5 contains changes to its built-in declaration files which may affect your compilation; however, these changes were fairly minimal, and we expect most code will be unaffected. Because Awaited is now used in lib.d.ts and as a result of await, you may see certain generic types change ...
🌐
GitHub
github.com › microsoft › TypeScript › wiki › Breaking-Changes
Breaking Changes · microsoft/TypeScript Wiki · GitHub
To help catch this mistake, in TypeScript 4.5, it is an error to add a top-level field which matches any of the available options in compilerOptions without having also defined compilerOptions in that tsconfig.json. TypeScript no longer allows types to be assignable to conditional types that use infer, or that are distributive. Doing so previously often ended up causing major performance issues. For more information, see the specific change on GitHub.
Author   microsoft
🌐
Microsoft Developer Blogs
devblogs.microsoft.com › dev blogs › typescript › announcing typescript 5.0
Announcing TypeScript 5.0 - TypeScript
March 17, 2023 - In TypeScript 5.0, we moved to modules, removed some unnecessary interfaces, and made some correctness improvements. For more details on what’s changed, see our API Breaking Changes page.
🌐
TypeScript
typescriptlang.org › docs › handbook › release-notes › typescript-5-4.html
TypeScript: Documentation - TypeScript 5.4
TypeScript no longer allows enum members to use the names Infinity, -Infinity, or NaN. ... See more details here. Previously, applying a mapped type with any into a tuple would create an any element type. This is undesirable and is now fixed. ... For more information, see the fix along with the follow-on discussion around behavioral changes and further tweaks. While not a breaking change per se, developers may have implicitly taken dependencies on TypeScript’s JavaScript or declaration emit outputs.
🌐
Reddit
reddit.com › r/javascript › announcing typescript 5.0
r/javascript on Reddit: Announcing TypeScript 5.0
March 16, 2023 - Yes, it's not pure semver, but TS 5.0 is definitely not the 50th release of typescript. The previous version is 4.9.5. ... I may be wrong, but I don’t remember seeing breaking changes for minor versions. However version 5 does have breaking changes (that have been in store for a while).
🌐
TypeScript
typescriptlang.org › docs › handbook › release-notes › typescript-4-9.html
TypeScript: Documentation - TypeScript 4.9
While TypeScript strives to avoid major breaks, even small changes in the built-in libraries can cause issues.
🌐
GitHub
github.com › microsoft › TypeScript › wiki › API-Breaking-Changes
API Breaking Changes · microsoft/TypeScript Wiki · GitHub
The lift function in the visitNode API now takes a readonly Node[]. You can see details of the change here. Type Arguments in JavaScript Are Not Parsed as Type Arguments · Type arguments were already not allowed in JavaScript, but in TypeScript 4.1, the parser will parse them in a more spec-compliant way. So when writing the following code in a JavaScript file: ... This may impact you if you were leveraging TypeScript's API to parse type constructs in JavaScript files, which may have occurred when trying to parse Flow files.
Author   microsoft
🌐
LogRocket
blog.logrocket.com › home › exploring typescript 5 features: smaller, simpler, faster
Exploring TypeScript 5 features: Smaller, simpler, faster - LogRocket Blog
June 4, 2024 - To explicitly coerce ns, prefix it with the + symbol: function func(ns: number | string) { return +ns > 4; } Starting from TypeScript 5.0, several flags will no longer be supported.
Find elsewhere
🌐
GitHub
github.com › microsoft › TypeScript-wiki › blob › main › Breaking-Changes.md
TypeScript-wiki/Breaking-Changes.md at main · microsoft/TypeScript-wiki
To help catch this mistake, in TypeScript 4.5, it is an error to add a top-level field which matches any of the available options in compilerOptions without having also defined compilerOptions in that tsconfig.json. TypeScript no longer allows types to be assignable to conditional types that use infer, or that are distributive. Doing so previously often ended up causing major performance issues. For more information, see the specific change on GitHub.
Author   microsoft
🌐
Webdevtutor
webdevtutor.net › blog › typescript-breaking-changes-4-to-5
Understanding TypeScript Breaking Changes from Version 4 to 5
Let's dive into some of the key breaking changes: In TypeScript 4, the unknown type was introduced to represent values that are not yet known during development. However, in TypeScript 5, the behavior of unknown has been refined to provide stricter type checking.
🌐
Medium
medium.com › @onix_react › what-to-expect-from-typescript-5-4-2085e355ca46
What To Expect From TypeScript 5.4 | by Onix React | Medium
February 23, 2024 - While these changes improve behavior, developers should be aware of potential breaks in code using constructs like conditional types. Errors When Type-Only Imports Conflict with Local Values · In TypeScript 5.4, under the isolatedModules setting, importing a name that conflicts with a local ...
🌐
Kinsta®
kinsta.com › home › resource center › blog › javascript tutorials › what’s new in typescript 5.0: declarators, const type, enums improvement, speed, and much more!
What’s New in TypeScript 5.0: Declarators, Const Type, Enums Improvement, Speed, and Much More!
March 13, 2024 - In particular, certain properties ... across interfaces. API breaking changes: Some unnecessary interfaces have been removed, and some correctness improvements have been made. TypeScript 5.0 has also moved to modul...
🌐
Medium
medium.com › rewrite-tech › typescript-5-0-the-new-features-and-the-issues-they-solve-49757530e760
TypeScript 5.0: the new features and the issues they solve! | by Sammy-Jo Wymer | REWRITE TECH by Diconium | Medium
July 17, 2025 - However, sometimes we know better than TypeScript *slaps hand to mouth* and in this instance we know that we don’t want the value of amazingTunes to change. That’s why we added the readonly tag… · Previously, we could use as const to deal with this issue but now there is an even slicker solution… · Solution #2 In TypeScript 5.0, we can add const before the T in our function type:
Top answer
1 of 1
1

It's very difficult to say exactly why your code worked before, stopped working, and then apparently works again in the nightly version of TypeScript. I mean, it's relatively straightforward to give a rundown of the "what" but not the "how":

  • Your code broke with microsoft/TypeScript#55140, a bug fix for microsoft/TypeScript#55129, an issue with mapped types. This was released with TypeScript 5.4.

  • Your code was fixed with microsoft/TypeScript#55371, a bug fix for microsoft/TypeScript#55364, an issue with template literal types. This will be released with TypeScript 5.5.

These issues don't have anything obvious to do with each other. Your code does involve mapped types and template literal types, so it's quite possible that the break and the fix are touching different pieces of your code and it's essentially a coincidence.

If you need to know what's going on you might try to come up with a more minimal example, and/or file your own GitHub issue about it. Until and unless that happens I don't have any further insight.


On the other hand, a general approach for situations in which you are sure that a type X is assignable to a type Y but the compiler can't see it (generally because one or both types depend on generic types, and the compiler doesn't have much ability to do higher-order generic reasoning), you can often use the [intersection(https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types) X & Y instead of X. If you're correct about the assignability, then ultimately X & Y will be equivalent (more or less) to X. And the compiler will always recognize X & Y is assignable to X, by definition of the intersection.

So, in your example, you could always do something like

declare function createEnahncer<T extends any[]>(composition: T) {
  const mapSelectorToValueNames = <K extends SelectorKeysCollection<T>>(
      name: K
  ): (keyof SelectorValuesCollection<T>) & ExtractSelectorPropertyName<K>;

to avoid the error. If you're using complicated types (especially things like UnionToIntersection) then you will probably eventually need something like this, even if the particular issue in your question turns out to be a real bug.

Playground link to code

🌐
Microsoft Developer Blogs
devblogs.microsoft.com › dev blogs › typescript › announcing typescript 5.4 beta
Announcing TypeScript 5.4 Beta - TypeScript
February 12, 2024 - This change was provided thanks to Oleksandr Tarasiuk. TypeScript now has a quick fix to add a new parameter to functions that are called with too many arguments. This can be useful when threading a new argument through several existing functions, which can be cumbersome today. This quick fix was provided courtsey of Oleksandr Tarasiuk. TypeScript 5.0 deprecated the following options and behaviors:
🌐
GitHub
github.com › microsoft › TypeScript › releases
Releases · microsoft/TypeScript
fixed issues query for Typescript 5.7.2 (Stable). Downloads are available on: npm · Assets 3 · Loading · There was an error while loading. Please reload this page. 83 people reacted · Previous 1 2 3 4 5 … 21 22 Next · Previous Next ·
Author   microsoft