Skip to content

Commit 81840ec

Browse files
committed
feat: add type util inferOptions
1 parent 27e85c4 commit 81840ec

4 files changed

Lines changed: 49 additions & 8 deletions

File tree

README-zh_CN.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,13 +464,14 @@ exit a
464464
您可以使用 `inferVariables``inferData` 提取任何自定义 hook 的 TypeScript 类型
465465

466466
```ts
467-
import { inferData, inferFnData, inferVariables } from 'react-query-kit'
467+
import { inferData, inferFnData, inferVariables, inferOptions } from 'react-query-kit'
468468

469469
const useProjects = createInfiniteQuery<Response, Variables>(...)
470470

471-
inferVariables<typeof usePost> // Variables
472-
inferData<typeof usePost> // InfiniteData<Response>
473-
inferFnData<typeof usePost> // Response
471+
inferVariables<typeof useProjects> // Variables
472+
inferData<typeof useProjects> // InfiniteData<Response>
473+
inferFnData<typeof useProjects> // Response
474+
inferOptions<typeof useProjects> // InfiniteQueryHookOptions<...>
474475
```
475476

476477
## Issues

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -473,13 +473,14 @@ exit a
473473
You can extract the TypeScript type of any custom hook with `inferVariables` or `inferData`
474474

475475
```ts
476-
import { inferData, inferFnData, inferVariables } from 'react-query-kit'
476+
import { inferData, inferFnData, inferVariables, inferOptions } from 'react-query-kit'
477477

478478
const useProjects = createInfiniteQuery<Response, Variables>(...)
479479

480-
inferVariables<typeof usePost> // Variables
481-
inferData<typeof usePost> // InfiniteData<Response>
482-
inferFnData<typeof usePost> // Response
480+
inferVariables<typeof useProjects> // Variables
481+
inferData<typeof useProjects> // InfiniteData<Response>
482+
inferFnData<typeof useProjects> // Response
483+
inferOptions<typeof useProjects> // InfiniteQueryHookOptions<...>
483484
```
484485

485486
## Issues

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ export type {
2222
inferVariables,
2323
inferData,
2424
inferFnData,
25+
inferOptions,
2526
Middleware,
2627
} from './types'

src/types.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,3 +439,41 @@ export type inferFnData<T> = T extends QueryHook<infer TData, any, any>
439439
: T extends MutationHook<infer TData, any, any>
440440
? TData
441441
: never
442+
443+
export type inferOptions<T> = T extends QueryHook<
444+
infer TFnData,
445+
infer TVariables,
446+
infer TError
447+
>
448+
? QueryHookOptions<TFnData, TError, TFnData, TVariables>
449+
: T extends SuspenseQueryHook<infer TFnData, infer TVariables, infer TError>
450+
? SuspenseQueryHookOptions<TFnData, TError, TFnData, TVariables>
451+
: T extends InfiniteQueryHook<
452+
infer TFnData,
453+
infer TVariables,
454+
infer TError,
455+
infer TPageParam
456+
>
457+
? InfiniteQueryHookOptions<
458+
TFnData,
459+
TError,
460+
CompatibleWithV4<InfiniteData<TFnData, TPageParam>, TFnData>,
461+
TVariables,
462+
TPageParam
463+
>
464+
: T extends SuspenseInfiniteQueryHook<
465+
infer TFnData,
466+
infer TVariables,
467+
infer TError,
468+
infer TPageParam
469+
>
470+
? SuspenseInfiniteQueryHookOptions<
471+
TFnData,
472+
TError,
473+
CompatibleWithV4<InfiniteData<TFnData, TPageParam>, TFnData>,
474+
TVariables,
475+
TPageParam
476+
>
477+
: T extends MutationHook<infer TFnData, infer TVariables, infer TError>
478+
? MutationHookOptions<TFnData, TError, TVariables, unknown>
479+
: never

0 commit comments

Comments
 (0)