我在打字稿快递应用中使用模式拼接(如here所示)。
在不同文件中创建解析器似乎会导致生成问题。但是,可以在app.ts
中创建解析器(如下所示)。
app
├── app.ts
├── resolvers
│ ├── graphql-user-resolver.ts
│ └── index.ts
└── schema
├── graphql-user-schema.ts
└── index.ts
import express = require('express');
import { ApolloServer } from 'apollo-server-express';
import schema from './schema';
const app: express.Application = express();
import resolvers from './resolvers';
const server: ApolloServer = new ApolloServer({
typeDefs: schema,
resolvers,
});
server.applyMiddleware({app, path: '/graphql'});
app.listen({port: 8000}, () => {
console.log('http://localhost:8000/graphql');
});
export default {
Query: {
me: () => {
return {
username: 'username',
};
},
},
};
import graphqlUserResolver from './graphql-user-resolver';
export default [
graphqlUserResolver,
];
app/app.ts:11:3 - error TS2322: Type '{ Query: { me: () => { username: string; }; }; }[]' is not assignable to type 'IResolvers<any, any>'.
Index signature is missing in type '{ Query: { me: () => { username: string; }; }; }[]'.
11 resolvers,
~~~~~~~~~
node_modules/apollo-server-core/dist/types.d.ts:31:5
31 resolvers?: IResolvers;
~~~~~~~~~
The expected type comes from property 'resolvers' which is declared here on type 'ApolloServerExpressConfig'
Found 1 error.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! server@0.0.1 tsc: `tsc`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the server@0.0.1 tsc script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/.../.npm/_logs/2019-06-24T02_05_04_497Z-debug.log
resolvers
中定义app.ts
可以正常工作:const resolvers = {
Query: {
me: () => {
return {
username: 'username',
};
},
},
};
const server: ApolloServer = new ApolloServer({
typeDefs: schema,
resolvers,
});
答案 0 :(得分:0)
打字稿在这里无关紧要。使用JS传播或分别写入对象。喜欢:
export default x;
queries['Type'] = x;