Skip to content

Commit a0f7712

Browse files
authored
fix(types): Fix error is typed as unknown (TanStack#483) (TanStack#514)
1 parent 4336a52 commit a0f7712

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

types/index.d.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -381,22 +381,22 @@ export interface BaseQueryOptions {
381381
* If set to an integer number, e.g. 3, failed queries will retry until the failed query count meets that number.
382382
* If set to a function `(failureCount, error) => boolean` failed queries will retry until the function returns false.
383383
*/
384-
retry?: boolean | number | ((failureCount: number, error: unknown) => boolean)
384+
retry?: boolean | number | ((failureCount: number, error: Error) => boolean)
385385
retryDelay?: (retryAttempt: number) => number
386386
staleTime?: number
387387
cacheTime?: number
388388
refetchInterval?: false | number
389389
refetchIntervalInBackground?: boolean
390390
refetchOnWindowFocus?: boolean
391391
refetchOnMount?: boolean
392-
onError?: (err: unknown) => void
392+
onError?: (err: Error) => void
393393
suspense?: boolean
394394
isDataEqual?: (oldData: unknown, newData: unknown) => boolean
395395
}
396396

397397
export interface QueryOptions<TResult> extends BaseQueryOptions {
398398
onSuccess?: (data: TResult) => void
399-
onSettled?: (data: TResult | undefined, error: unknown | null) => void
399+
onSettled?: (data: TResult | undefined, error: Error | null) => void
400400
initialData?: TResult | (() => TResult | undefined)
401401
}
402402

@@ -415,7 +415,7 @@ export interface InfiniteQueryOptions<TResult, TMoreVariable>
415415

416416
export interface QueryResultBase<TResult> {
417417
status: 'loading' | 'error' | 'success'
418-
error: null | unknown
418+
error: null | Error
419419
isFetching: boolean
420420
isStale: boolean
421421
failureCount: number
@@ -431,13 +431,13 @@ export interface QueryResultBase<TResult> {
431431
export interface QueryLoadingResult<TResult> extends QueryResultBase<TResult> {
432432
status: 'loading'
433433
data: TResult | undefined // even when error, data can have stale data
434-
error: unknown | null // it still can be error
434+
error: null | Error // it still can be error
435435
}
436436

437437
export interface QueryErrorResult<TResult> extends QueryResultBase<TResult> {
438438
status: 'error'
439439
data: TResult | undefined // even when error, data can have stale data
440-
error: unknown
440+
error: Error
441441
}
442442

443443
export interface QuerySuccessResult<TResult> extends QueryResultBase<TResult> {
@@ -456,15 +456,15 @@ export interface PaginatedQueryLoadingResult<TResult>
456456
status: 'loading'
457457
resolvedData: undefined | TResult // even when error, data can have stale data
458458
latestData: undefined | TResult // even when error, data can have stale data
459-
error: unknown | null // it still can be error
459+
error: null | Error // it still can be error
460460
}
461461

462462
export interface PaginatedQueryErrorResult<TResult>
463463
extends QueryResultBase<TResult> {
464464
status: 'error'
465465
resolvedData: undefined | TResult // even when error, data can have stale data
466466
latestData: undefined | TResult // even when error, data can have stale data
467-
error: unknown
467+
error: Error
468468
}
469469

470470
export interface PaginatedQuerySuccessResult<TResult>
@@ -502,13 +502,13 @@ export type MutationFunction<TResults, TVariables> = (
502502
export interface MutateOptions<TResult, TVariables> {
503503
onSuccess?: (data: TResult, variables: TVariables) => Promise<void> | void
504504
onError?: (
505-
error: unknown,
505+
error: Error,
506506
variables: TVariables,
507507
snapshotValue: unknown
508508
) => Promise<void> | void
509509
onSettled?: (
510510
data: undefined | TResult,
511-
error: unknown | null,
511+
error: Error | null,
512512
variables: TVariables,
513513
snapshotValue?: unknown
514514
) => Promise<void> | void
@@ -534,7 +534,7 @@ export type MutateFunction<TResult, TVariables> = undefined extends TVariables
534534
export interface MutationResultBase<TResult> {
535535
status: 'idle' | 'loading' | 'error' | 'success'
536536
data: undefined | TResult
537-
error: null | unknown
537+
error: undefined | null | Error
538538
promise: Promise<TResult>
539539
reset: () => void
540540
}
@@ -557,7 +557,7 @@ export interface ErrorMutationResult<TResult>
557557
extends MutationResultBase<TResult> {
558558
status: 'error'
559559
data: undefined
560-
error: unknown
560+
error: Error
561561
}
562562

563563
export interface SuccessMutationResult<TResult>
@@ -575,7 +575,7 @@ export type MutationResult<TResult> =
575575

576576
export interface CachedQueryState<T> {
577577
data?: T
578-
error?: unknown | null
578+
error?: Error | null
579579
failureCount: number
580580
isFetching: boolean
581581
canFetchMore?: boolean
@@ -748,10 +748,10 @@ export interface ReactQueryProviderConfig extends BaseQueryOptions {
748748

749749
onMutate?: (variables: unknown) => Promise<unknown> | unknown
750750
onSuccess?: (data: unknown, variables?: unknown) => void
751-
onError?: (err: unknown, snapshotValue?: unknown) => void
751+
onError?: (err: Error, snapshotValue?: unknown) => void
752752
onSettled?: (
753753
data: unknown | undefined,
754-
error: unknown | null,
754+
error: Error | null,
755755
snapshotValue?: unknown
756756
) => void
757757
isDataEqual?: (oldData: unknown, newData: unknown) => boolean

types/test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function simpleQuery() {
1212
// Query - simple case
1313
const querySimple = useQuery('todos', () => Promise.resolve('test'))
1414
querySimple.data // $ExpectType string | undefined
15-
querySimple.error // $ExpectType unknown
15+
querySimple.error // $ExpectType Error | null
1616
querySimple.isFetching // $ExpectType boolean
1717
querySimple.refetch() // $ExpectType Promise<string>
1818
querySimple.fetchMore // $ExpectError
@@ -166,13 +166,13 @@ function paginatedQuery() {
166166
if (queryPaginated.status === 'loading') {
167167
queryPaginated.resolvedData // $ExpectType { data: number[]; next: boolean; } | undefined
168168
queryPaginated.latestData // $ExpectType { data: number[]; next: boolean; } | undefined
169-
queryPaginated.error // $ExpectType unknown
169+
queryPaginated.error // $ExpectType Error | null
170170
}
171171

172172
if (queryPaginated.status === 'error') {
173173
queryPaginated.resolvedData // $ExpectType { data: number[]; next: boolean; } | undefined
174174
queryPaginated.latestData // $ExpectType { data: number[]; next: boolean; } | undefined
175-
queryPaginated.error // $ExpectType unknown
175+
queryPaginated.error // $ExpectType Error
176176
}
177177

178178
if (queryPaginated.status === 'success') {
@@ -221,7 +221,7 @@ function simpleInfiniteQuery(condition: boolean) {
221221
) {},
222222
onSettled(
223223
data, // $ExpectType number[][] | undefined
224-
error // $ExpectType unknown
224+
error // $ExpectType Error | null
225225
) {},
226226
initialData: () =>
227227
condition
@@ -331,7 +331,7 @@ function simpleMutation() {
331331
throwOnError: true,
332332
onSettled(result, error) {
333333
result // $ExpectType string[] | undefined
334-
error // $ExpectType unknown
334+
error // $ExpectType Error | null
335335
},
336336
})
337337

@@ -396,13 +396,13 @@ function dataDiscriminatedUnion() {
396396
// Discriminated union over status
397397
if (queryResult.status === 'loading') {
398398
queryResult.data // $ExpectType string[] | undefined
399-
queryResult.error // $ExpectType unknown
399+
queryResult.error // $ExpectType Error | null
400400
}
401401

402402
if (queryResult.status === 'error') {
403403
// disabled
404404
queryResult.data // $ExpectType string[] | undefined
405-
queryResult.error // $ExpectType unknown
405+
queryResult.error // $ExpectType Error
406406
}
407407

408408
if (queryResult.status === 'success') {
@@ -437,7 +437,7 @@ function mutationStatusDiscriminatedUnion() {
437437

438438
if (mutationState.status === 'error') {
439439
mutationState.data // $ExpectType undefined
440-
mutationState.error // $ExpectType unknown
440+
mutationState.error // $ExpectType Error
441441
}
442442

443443
if (mutationState.status === 'success') {

0 commit comments

Comments
 (0)