5

我对 graphql-code-generator 有疑问。生成的类型不适用于解析器。我收到一条错误消息viewer: () => ({

输入 '() => { createUser: () => { lastName: string; 名字:字符串;昵称:字符串;电子邮件:字符串;性别:用户性别;年龄:字符串;}; }' 不可分配给类型 'Resolver<ResolverTypeWrapper<Pick<ViewerMutation, "__typename"> & { createUser: UnconfirmedUser | 承诺 | 未发送的信 | 承诺<...> | 警告重复电子邮件 | 承诺<...>; }>、{}、MyContext、{}>'。

这是我的代码

代码生成.yml

overwrite: true
schema: "http://localhost:8000/graphql"
documents: null
generates:
  src/toolses/generated/resolversTypes.ts:
    plugins:
      - "typescript"
      - "typescript-resolvers"
    config:
      useIndexSignature: true
      contextType: ../../resolvers/typescript-resolvers#MyContext
      customResolverFn: ../../resolvers/typescript-resolvers#customResolverFn

打字稿解析器.ts

export type MyContext = {
  res: Response;
  req: Request;
  admin: any;
  currentUser: string;
  models: any;
};

export type customResolverFn<
  TResult,
  TParent = {},
  TArgs = {},
  TContext = {}
> = (
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
) => Promise<TResult | Error> | TResult | Error;

架构.ts

union UnconfirmedUserUnion =
      UnconfirmedUser
    | LetterNotSent
    | WarningDuplicateEmail

  enum UserGender {
    MALE
    FEMALE
    OTHER
  }

  type UnconfirmedUser {
    lastName: String!
    firstName: String!
    nickName: String!
    email: Email!
    gender: UserGender!
    age: String!
  }

  type LetterNotSent {
    lastName: String!
    firstName: String!
    nickName: String!
    email: Email!
    gender: UserGender!
    age: String!
  }

  type WarningDuplicateEmail {
    message: String!
    lastName: String!
    firstName: String!
    email: Email!
    gender: UserGender!
    age: String!
  }

  input CreateUserInput {
    lastName: String!
    firstName: String!
    email: Email!
    gender: UserGender!
    age: String!
    password: String!
  }

  type Query {
    viewer: String
  }

  type Mutation {
    viewer: ViewerMutation
  }

  type ViewerMutation {
    createUser(newUser: String!): UnconfirmedUserUnion!
  }

解析器.ts

const resolvers:Resolvers  = {
  ...scalarsType,
  ...InterfacesAndUnions,
  Query: queryResolvers,
  Mutation: {
    viewer: () => ({
      createUser: () => ({
        lastName: "string",
        firstName: "string",
        nickName: "string",
        email: "string",
        gender: UserGender.FEMALE,
        age: "string",
      }),
    }),
  },
};

如何纠正这个错误?

4

0 回答 0