mswjs / msw

Seamless REST/GraphQL API mocking library for browser and Node.js.
https://mswjs.io
MIT License
15.28k stars 479 forks source link

Unable to use HttpResponse.error() with TypeScript #2130

Open jacquesg opened 2 months ago

jacquesg commented 2 months ago

Prerequisites

Environment check

Node.js version

v20.12.1

Reproduction repository

https://codesandbox.io/p/sandbox/friendly-pare-8tkfgz?file=%2Fmocks%2Fhandlers.ts

Reproduction steps

npx tsc

Current behavior

Adding a return HttpResponse.error() results in a TS error:

mocks/handlers.ts:10:31 - error TS2345: Argument of type '() => Response' is not assignable to parameter of type 'GraphQLResponseResolver<GraphQLQuery, GraphQLVariables>'.
  Type 'Response' is not assignable to type 'AsyncResponseResolverReturnType<GraphQLResponseBody<GraphQLQuery>>'.
    Property '[bodyType]' is missing in type 'Response' but required in type 'StrictResponse<GraphQLResponseBody<GraphQLQuery>>'.

10   graphql.query('ListMovies', () => {
                                 ~~~~~~~

Expected behavior

No error.

kettanaito commented 2 months ago

Hi, @jacquesg! Thanks for reporting this. This looks like a bug and we should fix it.

Do you mind writing a simple type test for this? Putting it somewhere in this test suite would be the best. You can then open a PR with a failing test and we can investigate it from there. Let me know if that sounds interesting to you!

jacquesg commented 2 months ago

Hi @kettanaito, I've submitted PR #2132.

kettanaito commented 1 month ago

I shared a solution and my concerns with it in the PR.