From 9b60bf82c13123fe04377931f059b941f7d9c6ae Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Tue, 11 Feb 2020 11:41:29 +0000 Subject: [PATCH] Fix `useObservable` state generic inference Fixes https://github.com/LeetCode-OpenSource/rxjs-hooks/issues/171 --- src/use-observable.ts | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/use-observable.ts b/src/use-observable.ts index 2ed6858e..2ce08983 100644 --- a/src/use-observable.ts +++ b/src/use-observable.ts @@ -4,20 +4,13 @@ import useConstant from 'use-constant' import { RestrictArray } from './type' -export type InputFactory = Inputs extends undefined - ? (state$: Observable) => Observable - : (inputs$: Observable>, state$: Observable) => Observable - -export function useObservable(inputFactory: InputFactory): State | null -export function useObservable(inputFactory: InputFactory, initialState: State): State -export function useObservable( - inputFactory: InputFactory, - initialState: State, - inputs: RestrictArray, -): State - +export type InputFactory = (state$: Observable) => Observable; +export type InputFactoryWithInputs = (inputs$: Observable>, state$: Observable) => Observable; +export function useObservable(inputFactory: InputFactory): State | null; +export function useObservable(inputFactory: InputFactory, initialState: State): State; +export function useObservable(inputFactory: InputFactoryWithInputs, initialState: State, inputs: RestrictArray): State; export function useObservable>( - inputFactory: InputFactory, + inputFactory: InputFactoryWithInputs, initialState?: State, inputs?: RestrictArray, ): State | null { @@ -38,7 +31,7 @@ export function useObservable>( state$: Observable, ) => Observable)(inputs$, state$) as BehaviorSubject } else { - output$ = (inputFactory as (state$: Observable) => Observable)( + output$ = (inputFactory as unknown as (state$: Observable) => Observable)( state$, ) as BehaviorSubject }