类型 'IResolvers<any, any>' 不可分配给类型 'GraphQLResolverMap<any>'。索引签名不兼容
Posted
技术标签:
【中文标题】类型 \'IResolvers<any, any>\' 不可分配给类型 \'GraphQLResolverMap<any>\'。索引签名不兼容【英文标题】:Type 'IResolvers<any, any>' is not assignable to type 'GraphQLResolverMap<any>'. Index signatures are incompatible类型 'IResolvers<any, any>' 不可分配给类型 'GraphQLResolverMap<any>'。索引签名不兼容 【发布时间】:2020-11-05 20:24:47 【问题描述】:我按照Apollo Federation: Implementing services的指南进行操作
代码在这里:
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'。 索引签名不兼容。 键入'(() => 任何) | GraphQLScalarType | IEnumResolver | IResolverObject | IResolverOptions' 不可分配给类型 'GraphQLScalarType | [枚举值:字符串]:字符串 |数字; | [fieldName: string]: GraphQLFieldResolver | 需要?:字符串 |不明确的;解决:GraphQLFieldResolver<...>; ; '。 类型 '() => any' 不可分配给类型 'GraphQLScalarType | [枚举值:字符串]:字符串 |数字; | [fieldName: string]: GraphQLFieldResolver | 需要?:字符串 |不明确的;解决:GraphQLFieldResolver<...>; ; '。 类型 '() => any' 不可分配给类型 ' [fieldName: string]: GraphQLFieldResolver | 需要?:字符串 |不明确的;解析:GraphQLFieldResolver; ; '。 '() => any'.ts(2322) 类型中缺少索引签名
软件包版本:
"apollo-server": "^2.12.0",
"@apollo/federation": "^0.17.0",
好像IResolvers
接口不兼容,但是GraphQLResolverMap
接口没有暴露,所以无法导入使用。我不想将解析器的类型转换为 any
类型。这是一个错误吗?
更新
将apollo-server
更新为"apollo-server": "^2.15.1",
后问题依然存在
【问题讨论】:
嗨,你有想过这个吗?我正在与apollo-server: 2.24.0
和@apollo/federation: 0.25.0
的同一件事搏斗
【参考方案1】:
相信GraphQLResolverMap在别处,试试:
import GraphQLResolverMap from 'apollo-graphql';
然后使用它代替 IResolvers。
【讨论】:
以上是关于类型 'IResolvers<any, any>' 不可分配给类型 'GraphQLResolverMap<any>'。索引签名不兼容的主要内容,如果未能解决你的问题,请参考以下文章
无法从 graphql-tools 导入 IResolvers
类型 '() => Observable<any>' 不可分配给类型 '() => Observable<any>'
NestJS RedisIoAdapter 不可分配给 WebSocketAdapter<any, any, any> 类型的参数
Swift开发第九篇——Any和AnyObject&typealias和泛型接口
“MonoTypeOperatorFunction<any>”类型的参数不可分配给“UnaryFunction<Observable<any>, Observable