Skip to content

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

Merged
TkDodo merged 6 commits into
mainfrom
feature/type-narrow-error
May 6, 2025
Merged

fix(types): useSuspenseQuery should type-narrow the Error field#9105
TkDodo merged 6 commits into
mainfrom
feature/type-narrow-error

Conversation

@TkDodo

Copy link
Copy Markdown
Collaborator

No description provided.

@nx-cloud

nx-cloudBot commented May 5, 2025

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 0273210.

CommandStatusDurationResult
nx affected --targets=test:sherif,test:knip,tes...✅ Succeeded2m 52sView ↗
nx run-many --target=build --exclude=examples/*...✅ Succeeded1m 10sView ↗

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

TData = unknown,
TError = DefaultError,
> = OmitKeyof<
> = DistributiveOmit<

Copy link
Copy Markdown
CollaboratorAuthor

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.

@pkg-pr-new

pkg-pr-newBot commented May 5, 2025

Copy link
Copy Markdown
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

@github-actions

github-actionsBot commented May 5, 2025

Copy link
Copy Markdown
Contributor

Sizes for commit 0273210:

BranchBundle Size
Main
This PR

Comment threadpackages/query-core/src/types.ts Outdated
Co-authored-by: Jonghyeon Ko <manudeli.ko@gmail.com>
@manudeli

Copy link
Copy Markdown
Collaborator

exporttypeDistributiveOmit<T,TKeyOfAnyextendskeyofany>=Textendsany
? Omit<T,TKeyOfAny>
: never

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

Comment threadpackages/query-core/src/types.ts Outdated
@TkDodo

Copy link
Copy Markdown
CollaboratorAuthor

exporttypeDistributiveOmit<T,TKeyOfAnyextendskeyofany>=Textendsany
? Omit<T,TKeyOfAny>
: never

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

done: 5cd8471

@codecov

codecovBot commented May 6, 2025

Copy link
Copy Markdown

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 
ComponentsCoverage Δ
@tanstack/angular-query-devtools-experimental∅ <ø> (∅)
@tanstack/angular-query-experimental85.04% <ø> (ø)
@tanstack/eslint-plugin-query∅ <ø> (∅)
@tanstack/query-async-storage-persister43.85% <ø> (ø)
@tanstack/query-broadcast-client-experimental24.39% <ø> (ø)
@tanstack/query-codemods∅ <ø> (∅)
@tanstack/query-core95.96% <ø> (ø)
@tanstack/query-devtools3.61% <ø> (ø)
@tanstack/query-persist-client-core73.46% <ø> (ø)
@tanstack/query-sync-storage-persister84.61% <ø> (ø)
@tanstack/react-query95.42% <ø> (ø)
@tanstack/react-query-devtools10.00% <ø> (ø)
@tanstack/react-query-next-experimental∅ <ø> (∅)
@tanstack/react-query-persist-client100.00% <ø> (ø)
@tanstack/solid-query78.48% <ø> (ø)
@tanstack/solid-query-devtools∅ <ø> (∅)
@tanstack/solid-query-persist-client100.00% <ø> (ø)
@tanstack/svelte-query88.15% <ø> (ø)
@tanstack/svelte-query-devtools∅ <ø> (∅)
@tanstack/svelte-query-persist-client100.00% <ø> (ø)
@tanstack/vue-query71.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 mainMay 6, 2025
@TkDodo
TkDodo deleted the feature/type-narrow-error branch May 6, 2025 07:27
Sign up for freeto 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

@TkDodo@manudeli