Narrow excess-property acceptance for query init types in swr-openapi #2412
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.
Changes
Closes #2410
Summary
This PR tightens TypeScript excess-property checks for request init objects in
swr-openapi
:useQuery
init objects by using the concrete inferred type in the function signature.useInfinite
.No runtime behavior changes.
Motivation
Previously, TypeScript accepted extra keys in
params.query
/params.path
without error which could hide mistakesWhat changed
packages/swr-openapi/src/query-base.ts
useQuery
signature to useR["Init"]
directly in the parameter tuple:RequiredKeysOf<R["Init"]>
.packages/swr-openapi/src/__test__/types.test-d.ts
useQuery
: rejects extra properties inparams.query
,params.path
,params.header
.docs/swr-openapi/use-infinite.md
TypesForRequest<paths, "get", "...">["Init"]
satisfies
with the same typeBefore/After
Tests
useQuery
anduseInfinite
(query + path).Docs
docs/swr-openapi/use-infinite.md
.Checklist
docs/
updated (if necessary)