dotansimha / dotansimha/graphql-code-generator
Resolver cannot return null on nullable query...
- Dominant language
- TypeScript
- Stars
- 11.3k
- Forks
- 1.4k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 23
Description
### Which packages are impacted by your issue?
@graphql-codegen/cli, @graphql-codegen/core
### Describe the bug
```graphql
type Query {
# health check
time: Int!
allUsers: [User!]!
currentUser: User
interpreter(id: ID!): Interpreter
}
```
```typescript
src/api/graphql/resolvers/interpreter.ts:44:9 - error TS2322: Type '(_: {}, params: RequireFields, ctx: GraphQLContext) => Promise<{ userId: string; createdAt: Date; } | null>' is not assignable to type 'Resolver>, {}, GraphQLContext, RequireFields> | undefined'.
Type '(_: {}, params: RequireFields, ctx: GraphQLContext) => Promise<{ userId: string; createdAt: Date; } | null>' is not assignable to type 'ResolverFn>, {}, GraphQLContext, RequireFields>'.
Type 'Promise<{ userId: string; createdAt: Date; } | null>' is not assignable to type 'Maybe> | Promise>>'.
Type 'Promise<{ userId: string; createdAt: Date; } | null>' is not assignable to type 'Promise'.
Type '{ userId: string; createdAt: Date; } | null' is not assignable to type 'Interpreter'.
Type 'null' is not assignable to type 'Interpreter'.
44 async interpreter(_, params, ctx) {
~~~~~~~~~~~
```
```typescript
export const interpreterQueryResolvers: gql.QueryResolvers = {
async interpreter(_, params, ctx) {
const interpreter = await findInterpreterById(ctx, parseInt(params.id, 10));
if (!interpreter) return null;
return {
userId: `${interpreter.userId}`,
createdAt: interpreter.createdAt,
};
},
};
```
### Your Example Website or App
N/A
### Steps to Reproduce the Bug or Issue
Use my schema , and try to use the generated resolver types.
### Expected behavior
Should allow resolver to return a null value.
### Screenshots or Videos
_No response_
### Platform
- OS: macOS
- NodeJS: v20.5.0
- `graphql` version: 16.8.0
- `@graphql-codegen/*` version(s): 5.0.0
### Codegen Config File
```yaml
overwrite: true
schema: "./graphql/schema.graphql"
# documents: "./src/api/graphql/schema.graphql"
documents: null
emitLegacyCommonJSImports: false
generates:
# ./src/api/graphql/generated/client/:
# preset: "client-preset"
./src/api/graphql/generated/graphql.ts:
plugins:
- "typescript"
- "typescript-resolvers"
config:
enumsAsConst: true
```
### Additional context
_No response_
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.