fix: accept a narrower response body type by default #2107
Merged
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.
HttpResponse.json
#2105Changes
HttpResponse.text()
andHttpResponse.json()
do not infer the given body type anymore. This allows them to correctly infer whichever response body type is set on the wrapping request handler. As a consequence, the response body type will now respect the narrower type provided to the handler:never
even though they have fallback types. To prevent that, we are now explicitly checking for never:GraphQLResponseBody<[Query] extends [never] ? GraphQLQuery : Query>
. This makes the GraphQL handlers compatible with theNoInfer
changes toHttpResponse.json()
.null | undefined
. It's still technically possible to respond to a GraphQL response with those.x.toUpperCase()
and such.Warning
With the
NoInfer
changes toHttpResponse.json()
, extra keys in the response body object will cause type errors. You have to explicitly allow (and describe) any extra keys your object may have: