-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
fix: swr infers incorrect data
type for default SWRConfig
generic type
#2506
Merged
promer94
merged 4 commits into
vercel:main
from
connorch:fix/data-type-with-swr-configuration
Mar 14, 2023
Merged
fix: swr infers incorrect data
type for default SWRConfig
generic type
#2506
promer94
merged 4 commits into
vercel:main
from
connorch:fix/data-type-with-swr-configuration
Mar 14, 2023
+35
−58
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ercel#2452)" This reverts commit 04df1bf.
…ce won't work in typescript
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 3e32cfc:
|
This PR fixes #2505 |
data
type for default SWRConfig generic type
data
type for default SWRConfig generic typedata
type for default SWRConfig
generic type
promer94
approved these changes
Mar 14, 2023
Thanks for the comments and links ! |
Thanks for the speedy merge! 🙌 |
kodiakhq bot
referenced
this pull request
in kula-app/OnLaunch
Mar 23, 2023
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.0` -> `2.1.1`](https://renovatebot.com/diffs/npm/swr/2.1.0/2.1.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.1`](https://togithub.com/vercel/swr/releases/tag/v2.1.1) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.0...v2.1.1) #### Patches - refactor: remove useless dataRef, always compare cached data by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2431](https://togithub.com/vercel/swr/pull/2431) - fix: swr infers incorrect `data` type for default `SWRConfig` generic type by [@​connorch](https://togithub.com/connorch) in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) #### Documentation - docs: update subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2499](https://togithub.com/vercel/swr/pull/2499) #### New Contributors - [@​connorch](https://togithub.com/connorch) made their first contribution in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) **Full Changelog**: vercel/swr@v2.1.0...v2.1.1 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/kula-app/OnLaunch). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNy4xIiwidXBkYXRlZEluVmVyIjoiMzUuMTcuMSJ9-->
1 task
renovate bot
referenced
this pull request
in Unleash/unleash
May 4, 2023
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.0.4` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.0.4/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 ### [`v2.1.2`](https://togithub.com/vercel/swr/releases/tag/v2.1.2) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.1...v2.1.2) ##### Patches - Improved type inferring for `swr/subscription` - Adding `SWRSubscriptionOptions` type for `swr/subscription` #### Changes - test: add typing test for empty config by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2521](https://togithub.com/vercel/swr/pull/2521) - test: fix syntax error in Equal type alias implementation by [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) - chore: remove engines by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2536](https://togithub.com/vercel/swr/pull/2536) - types: improve `useSWRSubscription` types by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2535](https://togithub.com/vercel/swr/pull/2535) - Rename subscription types by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2537](https://togithub.com/vercel/swr/pull/2537) #### New Contributors - [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) made their first contribution in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) **Full Changelog**: vercel/swr@v2.1.1...v2.1.2 ### [`v2.1.1`](https://togithub.com/vercel/swr/releases/tag/v2.1.1) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.0...v2.1.1) #### Patches - refactor: remove useless dataRef, always compare cached data by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2431](https://togithub.com/vercel/swr/pull/2431) - fix: swr infers incorrect `data` type for default `SWRConfig` generic type by [@​connorch](https://togithub.com/connorch) in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) #### Documentation - docs: update subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2499](https://togithub.com/vercel/swr/pull/2499) #### New Contributors - [@​connorch](https://togithub.com/connorch) made their first contribution in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) **Full Changelog**: vercel/swr@v2.1.0...v2.1.1 ### [`v2.1.0`](https://togithub.com/vercel/swr/releases/tag/v2.1.0) [Compare Source](https://togithub.com/vercel/swr/compare/v2.0.4...v2.1.0) #### Feature - Subscription mode by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/1263](https://togithub.com/vercel/swr/pull/1263) - parallel option for useSWRInfinite by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2404](https://togithub.com/vercel/swr/pull/2404) Checkout [subscription docs](https://swr.vercel.app/docs/subscription) and [useSWRInfinite parallel fetching docs](https://swr.vercel.app/docs/pagination#parallel-fetching-mode) for more details #### Patches - fix: use the latest config in useSWRMutation by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2468](https://togithub.com/vercel/swr/pull/2468) - Fix: type support for suspense and fallbackData([#​2396](https://togithub.com/vercel/swr/issues/2396)) by [@​taro-28](https://togithub.com/taro-28) in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) - Error should be reset when new data comes by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2472](https://togithub.com/vercel/swr/pull/2472) - fix: avoid creating new snapshot if cache is not updated at client during streaming by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2475](https://togithub.com/vercel/swr/pull/2475) - refactor: initialize the cache only on first access by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2479](https://togithub.com/vercel/swr/pull/2479) #### Misc - ci: fix publish workflow by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2453](https://togithub.com/vercel/swr/pull/2453) - ci: faster e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2428](https://togithub.com/vercel/swr/pull/2428) - test: add a test for keepPreviousData without changing key by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2470](https://togithub.com/vercel/swr/pull/2470) - Always assume subscriptions will return sub count from current key by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2460](https://togithub.com/vercel/swr/pull/2460) - test: Fix flaky e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2476](https://togithub.com/vercel/swr/pull/2476) - chore: Add subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2480](https://togithub.com/vercel/swr/pull/2480) #### New Contributors - [@​taro-28](https://togithub.com/taro-28) made their first contribution in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) **Full Changelog**: vercel/swr@v2.0.4...v2.1.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/Unleash/unleash). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS42OS4zIiwidXBkYXRlZEluVmVyIjoiMzUuNjkuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR resolves issue #2505 by reverting PR #2452, and updates the tests to better explain why this issue cannot be fixed: #2396
#2396 suggests that if a generic is passed to the
useSWR
hook, that the library should still infer the type of the SWRConfig passed in. However, this isn't possible in typescript due to limitations with partial inference. That is, typescript can either infer all generics or none at all - never some but not others.Here's a simple example to showcase this partial inference limitation:
#2452 didn't actually fix the issue #2396 - it just forced it so that the default of the
SWRConfig
generic forced the type check inBlockingData
to always evaluated totrue
. This is now tested against in the new test casetestConfigAsSWRConfiguration
. I also updated all of the tests added in that PR to point to some documentation explaining this typescript limitation.Some other documentation on this issue:
microsoft/TypeScript#26242
https://stackoverflow.com/questions/60377365/typescript-infer-type-of-generic-after-optional-first-generic