首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >键入'IResolvers<any,any>‘不能指定键入’GraphQLResolverMap<any>。索引签名不兼容。

键入'IResolvers<any,any>‘不能指定键入’GraphQLResolverMap<any>。索引签名不兼容。
EN

Stack Overflow用户
提问于 2020-07-16 07:56:17
回答 1查看 2.2K关注 0票数 3

我遵循阿波罗联合会:实施服务指南

这里的代码:

代码语言:javascript
运行
复制
import { ApolloServer, gql, IResolvers } from 'apollo-server';
import { buildFederatedSchema } from '@apollo/federation';
import faker from 'faker';

const MemoryDB = {
  users: [
    { id: 1, name: faker.name.findName() },
    { id: 2, name: faker.name.findName() },
  ],
};

const typeDefs = gql`
  type Query {
    userById(id: ID!): User
  }
  type User @key(fields: "id") {
    id: ID!
    name: String!
  }
`;

const resolvers: IResolvers = {
  Query: {
    me: (_, { id }, { db }) => {
      return db.users.find((u) => u.id === +id);
    },
  },
  User: {
    __resolveReference(user, { db }) {
      return db.users.find((u) => u.id === user.id);
    },
  },
};

const server = new ApolloServer({
  schema: buildFederatedSchema([{ typeDefs, resolvers }]), // TSC throw error here
});

TSC抛出类型错误:

键入'IResolvers‘不能指定键入'GraphQLResolverMap’。索引签名不兼容。类型'(() => any) GraphQLScalarType IEnumResolver IEnumResolver IResolverObject \ IResolverOptions‘不能分配到键入'GraphQLScalarType \{ enumValue: string {enumValue: string收号;}{ fieldName: string: GraphQLFieldResolver { requires?:string?:string未定义;解析: GraphQLFieldResolver<...>;} }’。类型'() => any‘不能分配给键入'GraphQLScalarType { enumValue: enumValue: string \n;}{ fieldName: string: GraphQLFieldResolver { requires?:string { undefined;解析: GraphQLFieldResolver<...>;};}’。类型'() => any‘不能分配给以下类型:{ fieldName: string: GraphQLFieldResolver { argName: string: any;}>{ requires?:string未定义;解析: GraphQLFieldResolver any‘..ts(2322)中缺少索引签名

包版本:

代码语言:javascript
运行
复制
"apollo-server": "^2.12.0",
"@apollo/federation": "^0.17.0",

看来IResolvers接口是不兼容的,但是GraphQLResolverMap接口没有公开,所以我不能导入和使用。我不想将解析器类型转换为any类型。这是个虫子吗?

更新

在将apollo-server更新为"apollo-server": "^2.15.1",之后,问题仍然存在

EN

回答 1

Stack Overflow用户

发布于 2021-06-18 13:29:41

我相信GraphQLResolverMap在其他地方,试着:

代码语言:javascript
运行
复制
import { GraphQLResolverMap } from 'apollo-graphql';

然后用它代替IResolvers。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62930094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档