GraphQL+TypeScript项目报GraphQLFieldConfig缺少type属性错误求解
GraphQL + TypeScript 字段缺失必填type属性报错修复
问题现象
- 开发GraphQL+TypeScript项目时触发TS类型校验错误
- 报错核心信息:
{ args: ...; resolve(...) }结构缺少必填属性type,不符合GraphQLFieldConfig<any, any, any>类型约束 - 报错触发位置:代码第11行
fields: {addAccountDetails:CREATE_USER}, - 触发场景:声明自定义account GraphQL对象类型时,index.ts直接抛出错误,无法完成预期字段定义
根因分析
GraphQL 所有字段配置必须显式声明type属性,用来指定字段resolve函数执行后的返回值类型,这是GraphQLFieldConfig类型的强制必填项。你当前定义的CREATE_USER配置仅声明了入参args和解析函数resolve,完全缺失返回类型定义,因此触发类型报错。
修复步骤
给CREATE_USER字段补充必填的type配置即可,根据业务场景选择对应返回类型:
- 新增账户后返回自定义Account对象的写法参考:
const CREATE_USER = { // 补充缺失的返回类型,替换为你实际定义的Account GraphQL类型 type: AccountType, args: { user_id: { type: GraphQLInt }, user_name: { type: GraphQLString }, bank_accounts: { type: GraphQLString } }, resolve(parent: any, args: any) { // 原有业务逻辑保持不变 } }
- 如果仅需要返回操作成功状态,可直接使用GraphQL内置标量类型:
const CREATE_USER = { type: GraphQLBoolean, args: { // 原有入参定义无需修改 user_id: { type: GraphQLInt }, user_name: { type: GraphQLString }, bank_accounts: { type: GraphQLString } }, resolve(parent: any, args: any) { // 逻辑执行完成后返回true/false标识操作结果 } }
提示:如果使用
GraphQLNonNull包装返回类型,需要保证resolve函数永远不会返回null/undefined,否则运行时会触发GraphQL校验错误。补充完type属性后TS报错会直接消除,无需修改其他配置。
内容的提问来源于stack exchange,提问作者RASEL MAHMUD
相关产品推荐
相关产品推荐

