Inheritance 接口扩展了GraphQL模式中的多个接口

Inheritance 接口扩展了GraphQL模式中的多个接口,inheritance,graphql,multiple-inheritance,Inheritance,Graphql,Multiple Inheritance,在GraphQL中,一个接口可以扩展多个其他接口吗? 我需要这样的东西: interface A { valueA: String } interface B { valueB: String } interface C extend interface A & B { valueA: String valueB: String } type D implements C{ valueA: String valueB: String } 所提

在GraphQL中,一个接口可以扩展多个其他接口吗?
我需要这样的东西:

interface A
{
   valueA: String
}

interface B
{
   valueB: String
}

interface C extend interface A & B
{
   valueA: String
   valueB: String
}

type D implements C{
   valueA: String
   valueB: String
}


所提供的解决方案指的是一种实现多个接口的类型,而不是一种扩展多个接口的类型

只有类型才能实现一个接口。一个接口不能实现另一个接口。您可以看到定义的接口的语法,它明显缺少所示的
implementsinterface
定义

当被问及这个问题时,答案是否定的,接口不可能扩展(或实现)其他接口


今天这个问题的答案是肯定的,接口可以实现其他接口,但该功能尚未在任何开源GraphQL服务器中实现

公司于2020年1月10日合并。2019年10月8日,graphql js的此规范实现被合并,但尚未发布(最终将作为graphql发布)-js@15.0.0)


对于某些用例,可以通过使用实现多个接口的类型来模拟此功能。例如,考虑这个模式:

interface Node {
  id: ID!
}

# Ideally we'd like to write `interface Pet implements Node`
# but that's not possible (yet)
interface Pet {
  id: ID!
  name: String!
}

type Cat implements Node, Pet {
  id: ID!
  name: String!
  prefersWetFood: Boolean!
}
然后我们就可以编写查询了

query {
  node(id: "sylviathecat") {
    ... on Pet {
      name
    }
  }
}

这是一个有效的查询,只要存在至少一个同样实现
节点
Pet
实现(实际上,
Pet
接口实际上根本不需要
id:id!
字段).

此处指的是实现多个接口的一种类型…请不要将其标记为重复,因为这是另一种类型的问题。请仔细阅读我的说明。我需要一个接口扩展多个接口,而不是一种类型的I实现多个接口。奇怪的是,不可能做到
接口B扩展另一个接口{}
,而
类型A实现了B
你的答案是详细和有用的,但你还是应该编辑它。问题在于扩展接口而不是实现它们。也许用类似于“……今天这个问题的答案仍然是否定的,尽管接口可以实现其他接口”的东西进行编辑就足够了吗?我还建议添加graphql-js@15.0.0问题是关于扩展接口而不是实现它们。在这里,扩展和实现之间的区别似乎相当迂腐。最初的问题使用了扩展这个词,但给出的代码示例实际上被归类为实现其他接口的接口。在某些方面,您是对的,但是关于在graphql和adnan中实现接口,已经有另一个问题了。mujkic特别评论说,这个问题不是它的重复。尽管我在某些方面同意你的看法。我个人不认为在graphql中实现和扩展接口有什么区别。如果它在别处,接口就不能实现另一个接口。这通常是为了上课。他提到的问题是关于实现接口的类型。。。总而言之,我可能是像你说的那样迂腐:)