Reorder Array#reduce overloads for better type inference #62879
Closed
+35
−35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Move the generic overload
reduce<U>before the non-generic overloads to fix incorrect type inference.Problem (Issue #7014)
When using
reducewith aninitialValuewhose typeUis assignable to the array element typeT, TypeScript incorrectly matches the non-generic overload.Solution
Swap the overload blocks so the generic version is checked first:
Files Changed
src/lib/es5.d.ts- ReadonlyArray and Array interfacessrc/lib/esnext.iterator.d.ts- Iterator interfaceDiff Stats
Pure block swap - no content changes, just reordering.
Test Plan
Fixes #7014