I'm setting up an interface between our NextJS Front and a series of backends. The interface will convert the various backs' REST or GraphQL APIs into a unitary GraphQL API. I'm using the library apollo-datasource-graphql to translate a back that offers a GraphQL API into a datasource to use with Apollo Server. I'm running into a fair number of TypeScript issues. At present TS complains about my definition of the Apollo data sources
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.
here
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => ({ gqlApi: new InterfaceGraphQLApi() })
});
where InterfaceGraphQLApi starts thusly
import { GraphQLDataSource } from "apollo-datasource-graphql";
export default class InterfaceGraphQLApi extends GraphQLDataSource {
baseURL = "http://localhost:4545/admin/api";
In the source files for Apollo-datasource-graphql (node_modules/src/GraphQLDataSource.ts) I see
export class GraphQLDataSource<TContext = any> {
So it seems that I could pass some kind of type parameter, which would be the same as Datasource<object> I might be OK? But I'm far out of my TypeScript/Apollo knowledge zone, so I'm wandering lost here. Any guidance much appreciated!