|
| 1 | +interface Result<TData = any, TError = Error | string> { |
| 2 | + data?: TData; |
| 3 | + error?: TError; |
| 4 | + loading: boolean; |
| 5 | + refetch?(): void; |
| 6 | +} |
| 7 | + |
| 8 | +type AnyFunction = (...args: any[]) => any; |
| 9 | +type Callback<TParams = any[]> = (...args: TParams) => void; |
| 10 | + |
| 11 | +export function useAsyncCallback(asyncCallback: AnyFunction, deps?: ReadonlyArray<any>): [Callback, Result]; |
| 12 | +export function useAsyncCallback<TData>( |
| 13 | + asyncCallback: AnyFunction, |
| 14 | + deps?: ReadonlyArray<any>, |
| 15 | +): [Callback, Result<TData>]; |
| 16 | +export function useAsyncCallback<TData, TError>( |
| 17 | + asyncCallback: AnyFunction, |
| 18 | + deps?: ReadonlyArray<any>, |
| 19 | +): [Callback, Result<TData, TError>]; |
| 20 | +export function useAsyncCallback<TData, TError, TCallback extends AnyFunction>( |
| 21 | + asyncCallback: TCallback, |
| 22 | + deps?: ReadonlyArray<any>, |
| 23 | +): [Callback<Parameters<TCallback>>, Result<TData, TError>]; |
| 24 | + |
| 25 | +export function useAsyncEffect(asyncEffect: AnyFunction, deps?: ReadonlyArray<any>): Result; |
| 26 | +export function useAsyncEffect<TData>(asyncEffect: AnyFunction, deps?: ReadonlyArray<any>): Result<TData>; |
| 27 | +export function useAsyncEffect<TData, TError>( |
| 28 | + asyncEffect: AnyFunction, |
| 29 | + deps?: ReadonlyArray<any>, |
| 30 | +): Result<TData, TError>; |
0 commit comments