@@ -377,6 +377,10 @@ describe('useQueries', () => {
377377 const key2 = queryKey ( )
378378 const key3 = queryKey ( )
379379 const key4 = queryKey ( )
380+ const key5 = queryKey ( )
381+
382+ type BizError = { code : number }
383+ const throwOnError = ( _error : BizError ) => true
380384
381385 // @ts -expect-error (Page component is not rendered)
382386 // eslint-disable-next-line
@@ -391,6 +395,18 @@ describe('useQueries', () => {
391395 expectTypeOf < Array < QueryObserverResult < number , unknown > > > ( result1 )
392396 expectTypeOf < number | undefined > ( result1 [ 0 ] ?. data )
393397
398+ // Array.map preserves TError
399+ const result1_err = useQueries ( {
400+ queries : Array ( 50 ) . map ( ( _ , i ) => ( {
401+ queryKey : [ 'key' , i ] as const ,
402+ queryFn : ( ) => i + 10 ,
403+ throwOnError,
404+ } ) ) ,
405+ } )
406+ expectTypeOf < Array < QueryObserverResult < number , unknown > > > ( result1_err )
407+ expectTypeOf < number | undefined > ( result1_err [ 0 ] ?. data )
408+ expectTypeOf < BizError | null | undefined > ( result1_err [ 0 ] ?. error )
409+
394410 // Array.map preserves TData
395411 const result2 = useQueries ( {
396412 queries : Array ( 50 ) . map ( ( _ , i ) => ( {
@@ -401,6 +417,16 @@ describe('useQueries', () => {
401417 } )
402418 expectTypeOf < Array < QueryObserverResult < string , unknown > > > ( result2 )
403419
420+ const result2_err = useQueries ( {
421+ queries : Array ( 50 ) . map ( ( _ , i ) => ( {
422+ queryKey : [ 'key' , i ] as const ,
423+ queryFn : ( ) => i + 10 ,
424+ select : ( data : number ) => data . toString ( ) ,
425+ throwOnError,
426+ } ) ) ,
427+ } )
428+ expectTypeOf < Array < QueryObserverResult < string , BizError > > > ( result2_err )
429+
404430 const result3 = useQueries ( {
405431 queries : [
406432 {
@@ -416,15 +442,23 @@ describe('useQueries', () => {
416442 queryFn : ( ) => [ 'string[]' ] ,
417443 select : ( ) => 123 ,
418444 } ,
445+ {
446+ queryKey : key5 ,
447+ queryFn : ( ) => 'string' ,
448+ throwOnError,
449+ } ,
419450 ] ,
420451 } )
421452 expectTypeOf < QueryObserverResult < number , unknown > > ( result3 [ 0 ] )
422453 expectTypeOf < QueryObserverResult < string , unknown > > ( result3 [ 1 ] )
423454 expectTypeOf < QueryObserverResult < number , unknown > > ( result3 [ 2 ] )
424455 expectTypeOf < number | undefined > ( result3 [ 0 ] . data )
425456 expectTypeOf < string | undefined > ( result3 [ 1 ] . data )
457+ expectTypeOf < string | undefined > ( result3 [ 3 ] . data )
426458 // select takes precedence over queryFn
427459 expectTypeOf < number | undefined > ( result3 [ 2 ] . data )
460+ // infer TError from throwOnError
461+ expectTypeOf < BizError | null | undefined > ( result3 [ 3 ] . error )
428462
429463 // initialData/placeholderData are enforced
430464 useQueries ( {
@@ -446,7 +480,7 @@ describe('useQueries', () => {
446480 ] ,
447481 } )
448482
449- // select params are "indirectly" enforced
483+ // select and throwOnError params are "indirectly" enforced
450484 useQueries ( {
451485 queries : [
452486 // unfortunately TS will not suggest the type for you
@@ -469,6 +503,11 @@ describe('useQueries', () => {
469503 queryFn : ( ) => 'string' ,
470504 select : ( a : string ) => parseInt ( a ) ,
471505 } ,
506+ {
507+ queryKey : key5 ,
508+ queryFn : ( ) => 'string' ,
509+ throwOnError,
510+ } ,
472511 ] ,
473512 } )
474513
@@ -504,11 +543,18 @@ describe('useQueries', () => {
504543 queryFn : ( ) => 'string' ,
505544 select : ( a : string ) => parseInt ( a ) ,
506545 } ,
546+ {
547+ queryKey : key5 ,
548+ queryFn : ( ) => 'string' ,
549+ select : ( a : string ) => parseInt ( a ) ,
550+ throwOnError,
551+ } ,
507552 ] ,
508553 } )
509554 expectTypeOf < QueryObserverResult < string , unknown > > ( result4 [ 0 ] )
510555 expectTypeOf < QueryObserverResult < string , unknown > > ( result4 [ 1 ] )
511556 expectTypeOf < QueryObserverResult < number , unknown > > ( result4 [ 2 ] )
557+ expectTypeOf < QueryObserverResult < number , BizError > > ( result4 [ 3 ] )
512558
513559 // handles when queryFn returns a Promise
514560 const result5 = useQueries ( {
@@ -532,10 +578,16 @@ describe('useQueries', () => {
532578 queryKey : [ 'key1' ] ,
533579 queryFn : ( ) => 123 ,
534580 } ,
581+ {
582+ queryKey : key5 ,
583+ queryFn : ( ) => 'string' ,
584+ throwOnError,
585+ } ,
535586 ] ,
536587 } as const )
537588 expectTypeOf < QueryObserverResult < string , unknown > > ( result6 [ 0 ] )
538589 expectTypeOf < QueryObserverResult < number , unknown > > ( result6 [ 1 ] )
590+ expectTypeOf < QueryObserverResult < string , BizError > > ( result6 [ 2 ] )
539591
540592 // field names should be enforced - array literal
541593 useQueries ( {
0 commit comments