Merged
Better type for reduce if not ininitial value is given#2205
Conversation
|
|
||
| test('reduce', () => { | ||
| // With an initial value, the result type is the accumulator type `R`. | ||
| (l: List<number>) => { |
| }; | ||
|
|
||
| // With an initial value (overload 1), the reduction is typed `R`. | ||
| (l: List<number>) => { |
|
|
||
| // Without an initial value and a reducer that returns a value (`R = V`), | ||
| // the result type `V` is inferred from the values — no annotation needed. | ||
| (l: List<number>) => { |
|
|
||
| // Without an initial value but a reducer that returns a different type `R`, | ||
| // the reduction is typed `V | R`, since the first value (a `V`) seeds it. | ||
| (l: List<number>) => { |
| }; | ||
|
|
||
| // Keyed collection: key is `K`. | ||
| (m: Map<string, number>) => { |
| }; | ||
|
|
||
| // Set collection: value and key are both `T`. | ||
| (s: Set<number>) => { |
| }; | ||
|
|
||
| // Base Collection. | ||
| (c: Collection<string, number>) => { |
| }); | ||
|
|
||
| test('reduceRight', () => { | ||
| (l: List<number>) => { |
| ).type.toBe<string>(); | ||
| }; | ||
|
|
||
| (l: List<number>) => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
[TypeScript]:
reduce/reduceRightwithout an initial value now infer the result type from the collection's values when the reducer returns a value (e.g.list.reduce((a, b) => a + b)infersnumber), matchingArray#reduce. Previously an explicit type argument was required.