Skip to content

Commit 26239d9

Browse files
committed
simplify the implementation of fetcher type
Author: YixuanXu <[email protected]>
1 parent 7ff0020 commit 26239d9

File tree

2 files changed

+19
-31
lines changed

2 files changed

+19
-31
lines changed

infinite/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -252,13 +252,11 @@ export const infinite = ((<Data, Error, Args extends ValueKey>(
252252

253253
export type InfiniteFetcher<
254254
Args extends ValueKey = ValueKey,
255-
Data = unknown
255+
Data = any
256256
> = Args extends (readonly [...infer K])
257257
? ((...args: [...K]) => Result<Data>)
258-
: Args extends (string | null)
259-
? Args extends (Record<any, any> | null)
260-
? never
261-
: (...args: [string]) => Result<Data>
258+
: Args extends null
259+
? never
262260
: Args extends (infer T)
263261
? (...args: [T]) => Result<Data>
264262
: never

src/types.ts

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,24 @@ export type Fetcher<Data = unknown, Args extends Key = Key> =
1010
*/
1111
Args extends (() => readonly [...infer K] | null)
1212
? ((...args: [...K]) => Result<Data>)
13-
/**
14-
* [{ foo: string }, { bar: number } ] | null
15-
*
16-
* [{ foo: string }, { bar: number } ] as const | null
17-
*/
18-
: Args extends (readonly [...infer K])
13+
: /**
14+
* [{ foo: string }, { bar: number } ] | null
15+
*
16+
* [{ foo: string }, { bar: number } ] as const | null
17+
*/
18+
Args extends (readonly [...infer K])
1919
? ((...args: [...K]) => Result<Data>)
20-
/**
21-
* () => string | null
22-
* () => Record<any, any> | null
23-
*/
24-
: Args extends (() => infer T | null)
20+
: /**
21+
* () => string | null
22+
* () => Record<any, any> | null
23+
*/
24+
Args extends (() => infer T | null)
2525
? (...args: [T]) => Result<Data>
26-
/**
27-
* string | null
28-
*/
29-
: Args extends (string | null)
30-
/**
31-
* when key is Record<any, any> | null
32-
* use { foo: string, bar: number } | null as example
33-
*
34-
* the fetcher would be
35-
* (arg0: string) => any | (arg0: { foo: string, bar: number }) => any
36-
* so we add this condition to make (arg0: string) => any to be never
37-
*/
38-
? Args extends (Record<any, any> | null)
39-
? never
40-
: (...args: [string]) => Result<Data>
26+
: /**
27+
* string | null | Record<any,any>
28+
*/
29+
Args extends null
30+
? never
4131
: Args extends (infer T)
4232
? (...args: [T]) => Result<Data>
4333
: never

0 commit comments

Comments
 (0)