Closed
Description
TypeScript Version: 3.5.2
Code
export type InputFactory<State, Inputs = undefined> = Inputs extends undefined
? (state$: Promise<State>) => Promise<State>
: (inputs$: Promise<Inputs>, state$: Promise<State>) => Promise<State>
export function usePromise<State>(inputFactory: InputFactory<State>): State | null
export function usePromise<State>(inputFactory: InputFactory<State>, initialState: State): State
export function usePromise<State, Inputs>(
inputFactory: InputFactory<State, Inputs>,
initialState: State,
inputs: Inputs,
): State
usePromise(
(inputs$, _) =>
inputs$.then(([v]) => v), // why typescript want Promise<number[]> here???? I hovered my mouse to userPromise and I could see the generic params in usePromise was inferred to <0, [number]>. So I assumed the typechecker would like Promise<0> or Promise<number> instead of Promise<number[]> here
0,
[1000],
)
Expected behavior:
usePromise has no type issues without generic type annotation.
Actual behavior:
usePromise has issues without generic type annotation.