Skip to content

Commit

Permalink
feat(useAsyncState): get a promise function parameter type declaration (
Browse files Browse the repository at this point in the history
  • Loading branch information
Brain777777 committed Feb 14, 2023
1 parent c6185bf commit b4c63b5
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions packages/core/useAsyncState/index.ts
Expand Up @@ -2,12 +2,12 @@ import { noop, promiseTimeout } from '@vueuse/shared'
import type { Ref, UnwrapRef } from 'vue-demi'
import { ref, shallowRef } from 'vue-demi'

export interface UseAsyncStateReturn<Data, Shallow extends boolean> {
export interface UseAsyncStateReturn<Data, Params extends any[], Shallow extends boolean> {
state: Shallow extends true ? Ref<Data> : Ref<UnwrapRef<Data>>
isReady: Ref<boolean>
isLoading: Ref<boolean>
error: Ref<unknown>
execute: (delay?: number, ...args: any[]) => Promise<Data>
execute: (delay?: number, ...args: Params) => Promise<Data>
}

export interface UseAsyncStateOptions<Shallow extends boolean, D = any> {
Expand Down Expand Up @@ -74,11 +74,11 @@ export interface UseAsyncStateOptions<Shallow extends boolean, D = any> {
* @param initialState The initial state, used until the first evaluation finishes
* @param options
*/
export function useAsyncState<Data, Shallow extends boolean = true>(
promise: Promise<Data> | ((...args: any[]) => Promise<Data>),
export function useAsyncState<Data, Params extends any[] = [], Shallow extends boolean = true>(
promise: Promise<Data> | ((...args: Params) => Promise<Data>),
initialState: Data,
options?: UseAsyncStateOptions<Shallow, Data>,
): UseAsyncStateReturn<Data, Shallow> {
): UseAsyncStateReturn<Data, Params, Shallow> {
const {
immediate = true,
delay = 0,
Expand All @@ -104,7 +104,7 @@ export function useAsyncState<Data, Shallow extends boolean = true>(
await promiseTimeout(delay)

const _promise = typeof promise === 'function'
? promise(...args)
? promise(...args as Params)
: promise

try {
Expand Down

0 comments on commit b4c63b5

Please sign in to comment.