Closed
Description
TypeScript Version: 3.1
Search Terms: type inferrence
Code
function reduceToPromise<T extends string>(promise: Promise<T>, items: string[]){
return promise
}
const initialPromise: Promise<string> = {} as any;
const items: string[][] = [];
const reducedOne = items.reduce(reduceToPromise, initialPromise);
const reducedTwo = items.reduce((promise, items) => reduceToPromise(promise, items), initialPromise);
Expected behavior:
Both reducedOne
and reducedTwo
should be typed as Promise<string>
Actual behavior:
reducedOne
is typed as {}
This issue only occurs when the function has a generic type. This works fine:
function reduceToPromise(promise: Promise<string>, items: string[]){
return promise
}
const initialPromise: Promise<string> = {} as any;
const items: string[][] = [];
const reduced = items.reduce(reduceToPromise, initialPromise);