Typescript graphql js将字段定义与类型分开

Typescript graphql js将字段定义与类型分开,typescript,types,schema,definition,graphql-js,Typescript,Types,Schema,Definition,Graphql Js,我有一个关于GraphQLJS模式定义的问题。我有以下三种类型,在两种类型中有相同的字段: const aType: GraphQLObjectType = new GraphQLObjectType({ name: 'aType', description: 'A type', fields: () => ({ fieldA: { type: baseType, description: 'The location of the

我有一个关于GraphQLJS模式定义的问题。我有以下三种类型,在两种类型中有相同的字段:

const aType: GraphQLObjectType = new GraphQLObjectType({
  name: 'aType',
  description: 'A type',
  fields: () => ({
    fieldA: {
      type: baseType,
      description:
        'The location of the order.',
      resolve: (root, { }) => "dummy resolve"
    }
  })
});

const bType: GraphQLObjectType = new GraphQLObjectType({
  name: 'bType',
  description: 'B type',
  fields: () => ({
    fieldA: {
      type: baseType,
      description:
        'The location of the order.',
      resolve: (root, { }) => "dummy resolve"
    }
  })
});

const baseType: GraphQLObjectType = new GraphQLObjectType({
  name: 'baseType',
  description: 'Base type',
  fields: () => ({
    dummy: {
      type: GraphQLString,
      resolve: (root, { }) => "Hi"
    }
  })
});
是否可以在aType和bType中定义相同的字段,然后在类型中使用该定义

像这样:

const fieldDefinition = {
      type: baseType,
      description:
        'The location of the order.',
      resolve: (root, { }) => "dummy resolve"
    }

const aType: GraphQLObjectType = new GraphQLObjectType({
  name: 'aType',
  description: 'A type',
  fields: () => ({
    fieldA: fieldDefinition
  })
});

const bType: GraphQLObjectType = new GraphQLObjectType({
  name: 'bType',
  description: 'B type',
  fields: () => ({
    fieldA: fieldDefinition
  })
});
我认为这应该是可能的,但我对必须分配fieldDefinition的typescript类型有问题。 界面不是选项,因为对象之间的重叠太小

干杯,
Christian

我想你根本不必给它指定类型。只要形状是一致的,我认为它就行了?它抱怨方法声明中的'root'参数。如果我没有显式地为fieldDefinition指定类型,那么看起来还可以。如果我给出任何类型的根,它都可以工作,但我认为这不是正确的方法。