Inheritance 接口扩展了GraphQL模式中的多个接口
在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 } 所提
我需要这样的东西:
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中实现和扩展接口有什么区别。如果它在别处,接口就不能实现另一个接口。这通常是为了上课。他提到的问题是关于实现接口的类型。。。总而言之,我可能是像你说的那样迂腐:)