Skip to content

fix(types): useSuspenseQuery should type-narrow the Error field #9105

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 6, 2025

Conversation

TkDodo
Copy link
Collaborator

@TkDodo TkDodo commented May 5, 2025

No description provided.

Copy link

nx-cloud bot commented May 5, 2025

View your CI Pipeline Execution ↗ for commit 0273210.

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 2m 52s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 1m 10s View ↗

☁️ Nx Cloud last updated this comment at 2025-05-06 07:19:12 UTC

@@ -155,7 +156,7 @@ export type UseQueryResult<
export type UseSuspenseQueryResult<
TData = unknown,
TError = DefaultError,
> = OmitKeyof<
> = DistributiveOmit<
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@manudeli I think your OmitKeyof helper doesn’t work over union types (just like the build-in Omit also doesn’t work with it).

Because DefinedQueryObserverResult is a union of:

| QueryObserverRefetchErrorResult<TData, TError>
| QueryObserverSuccessResult<TData, TError>

it “doesn’t work” in a sense that type narrowing to error doesn’t happen anymore because it’s not distributive.

I’ve added the standard DistributiveOmit helper and things work fine, but if you can improve your helper type to not fail the added test case, we can switch back.

Copy link

pkg-pr-new bot commented May 5, 2025

More templates

@tanstack/angular-query-devtools-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-devtools-experimental@9105

@tanstack/angular-query-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-experimental@9105

@tanstack/eslint-plugin-query

npm i https://pkg.pr.new/@tanstack/eslint-plugin-query@9105

@tanstack/query-async-storage-persister

npm i https://pkg.pr.new/@tanstack/query-async-storage-persister@9105

@tanstack/query-broadcast-client-experimental

npm i https://pkg.pr.new/@tanstack/query-broadcast-client-experimental@9105

@tanstack/query-core

npm i https://pkg.pr.new/@tanstack/query-core@9105

@tanstack/query-devtools

npm i https://pkg.pr.new/@tanstack/query-devtools@9105

@tanstack/query-persist-client-core

npm i https://pkg.pr.new/@tanstack/query-persist-client-core@9105

@tanstack/query-sync-storage-persister

npm i https://pkg.pr.new/@tanstack/query-sync-storage-persister@9105

@tanstack/react-query

npm i https://pkg.pr.new/@tanstack/react-query@9105

@tanstack/react-query-devtools

npm i https://pkg.pr.new/@tanstack/react-query-devtools@9105

@tanstack/react-query-next-experimental

npm i https://pkg.pr.new/@tanstack/react-query-next-experimental@9105

@tanstack/react-query-persist-client

npm i https://pkg.pr.new/@tanstack/react-query-persist-client@9105

@tanstack/solid-query

npm i https://pkg.pr.new/@tanstack/solid-query@9105

@tanstack/solid-query-devtools

npm i https://pkg.pr.new/@tanstack/solid-query-devtools@9105

@tanstack/solid-query-persist-client

npm i https://pkg.pr.new/@tanstack/solid-query-persist-client@9105

@tanstack/svelte-query

npm i https://pkg.pr.new/@tanstack/svelte-query@9105

@tanstack/svelte-query-devtools

npm i https://pkg.pr.new/@tanstack/svelte-query-devtools@9105

@tanstack/svelte-query-persist-client

npm i https://pkg.pr.new/@tanstack/svelte-query-persist-client@9105

@tanstack/vue-query

npm i https://pkg.pr.new/@tanstack/vue-query@9105

@tanstack/vue-query-devtools

npm i https://pkg.pr.new/@tanstack/vue-query-devtools@9105

commit: 0273210

Copy link

github-actions bot commented May 5, 2025

Sizes for commit 0273210:

Branch Bundle Size
Main
This PR

@manudeli
Copy link
Collaborator

manudeli commented May 5, 2025

export type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any
? Omit<T, TKeyOfAny>
: never

I think the DistributiveOmit from this line in Vue Query can be removed as well

@TkDodo
Copy link
Collaborator Author

TkDodo commented May 6, 2025

export type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any
? Omit<T, TKeyOfAny>
: never

I think the DistributiveOmit from this line in Vue Query can be removed as well

done: 5cd8471

Copy link

codecov bot commented May 6, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 58.78%. Comparing base (d82fb69) to head (0273210).
Report is 2 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             main    #9105       +/-   ##
===========================================
+ Coverage   44.50%   58.78%   +14.28%     
===========================================
  Files         204      139       -65     
  Lines        8150     5404     -2746     
  Branches     1820     1437      -383     
===========================================
- Hits         3627     3177      -450     
+ Misses       4080     1927     -2153     
+ Partials      443      300      -143     
Components Coverage Δ
@tanstack/angular-query-devtools-experimental ∅ <ø> (∅)
@tanstack/angular-query-experimental 85.04% <ø> (ø)
@tanstack/eslint-plugin-query ∅ <ø> (∅)
@tanstack/query-async-storage-persister 43.85% <ø> (ø)
@tanstack/query-broadcast-client-experimental 24.39% <ø> (ø)
@tanstack/query-codemods ∅ <ø> (∅)
@tanstack/query-core 95.96% <ø> (ø)
@tanstack/query-devtools 3.61% <ø> (ø)
@tanstack/query-persist-client-core 73.46% <ø> (ø)
@tanstack/query-sync-storage-persister 84.61% <ø> (ø)
@tanstack/react-query 95.42% <ø> (ø)
@tanstack/react-query-devtools 10.00% <ø> (ø)
@tanstack/react-query-next-experimental ∅ <ø> (∅)
@tanstack/react-query-persist-client 100.00% <ø> (ø)
@tanstack/solid-query 78.48% <ø> (ø)
@tanstack/solid-query-devtools ∅ <ø> (∅)
@tanstack/solid-query-persist-client 100.00% <ø> (ø)
@tanstack/svelte-query 88.15% <ø> (ø)
@tanstack/svelte-query-devtools ∅ <ø> (∅)
@tanstack/svelte-query-persist-client 100.00% <ø> (ø)
@tanstack/vue-query 71.10% <ø> (ø)
@tanstack/vue-query-devtools ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@TkDodo TkDodo merged commit 5c7927d into main May 6, 2025
7 checks passed
@TkDodo TkDodo deleted the feature/type-narrow-error branch May 6, 2025 07:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants