diff --git a/_internal/types.ts b/_internal/types.ts index 467a8cf06..28f8d6ad6 100644 --- a/_internal/types.ts +++ b/_internal/types.ts @@ -336,13 +336,22 @@ export type SWRConfiguration< Fn extends BareFetcher = BareFetcher > = Partial> -export interface SWRResponse { - data: Data | undefined - error: Error | undefined - mutate: KeyedMutator +export type SWRResponse = { mutate: KeyedMutator } & ({ + data: undefined + error: undefined + isValidating: true + isLoading: true +} | { + data: Data + error: undefined isValidating: boolean - isLoading: boolean -} + isLoading: false +} | { + data: undefined + error: Error + isValidating: boolean + isLoading: false +}) export type KeyLoader = | ((index: number, previousPageData: any | null) => Args) diff --git a/infinite/types.ts b/infinite/types.ts index c85f08364..e7833c556 100644 --- a/infinite/types.ts +++ b/infinite/types.ts @@ -34,8 +34,7 @@ export interface SWRInfiniteConfiguration< fetcher?: Fn } -export interface SWRInfiniteResponse - extends SWRResponse { +export type SWRInfiniteResponse = SWRResponse & { size: number setSize: ( size: number | ((_size: number) => number)