Я настраиваю интерфейс между нашим Next JS Front и рядом бэкэндов. Интерфейс преобразует различные API REST или GraphQL в единый API GraphQL. Я использую библиотеку apollo-datasource-graphql , чтобы перевести обратную сторону, которая предлагает API GraphQL, в источник данных для использования с сервером Apollo. Я сталкиваюсь с большим количеством проблем TypeScript. В настоящее время TS жалуется на мое определение источников данных Apollo
index.ts:10:25 - error TS2559: Type 'InterfaceGraphQLApi' has no properties in common with type 'DataSource<object>'.
10 dataSources: () => ({ gqlApi: new InterfaceGraphQLApi() })
~~~~~~
node_modules/apollo-server-core/dist/graphqlOptions.d.ts:31:5
31 [name: string]: DataSource<TContext>;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The expected type comes from this index signature.
здесь
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => ({ gqlApi: new InterfaceGraphQLApi() })
});
, где InterfaceGraphQLApi
начинается таким образом
import { GraphQLDataSource } from "apollo-datasource-graphql";
export default class InterfaceGraphQLApi extends GraphQLDataSource {
baseURL = "http://localhost:4545/admin/api";
В исходных файлах для Apollo-datasource-graphql
(node_modules / src / GraphQLDataSource.ts) я вижу
export class GraphQLDataSource<TContext = any> {
Так что я могу передать какой-то параметр типа, который будет таким же, как Datasource<object>
Может быть, я в порядке? Но я далеко за пределами своей зоны знаний TypeScript / Apollo, так что я заблудился здесь. Любое руководство высоко ценится!