如何在GraphQL中继承或扩展typeDefs

Chr*_*man 6 schema inheritance extends extend graphql

我有一个type User。用户也可以成为type TeamMemberUser和之间的唯一区别TeamMember是增加的字段teamRole: String。因此,我很乐意做下面的事情,以避免不必要地重复定义所有用户字段…

  type User {
    id: ID!,
    name: String,
    (many other field defs)
  }

  type TeamMember extends User  {
    teamRole: String,
  }
Run Code Online (Sandbox Code Playgroud)

任何人都知道这种语法吗?我以为extend会是答案,但似乎更像是javascript的prototype

Dan*_*den 6

extend如果您有一个基础架构,并希望基于该架构构建两个或多个可用架构,那就太好了。例如,您可以Query使用所有模式共享的查询定义根类型,然后在每个单独的模式中扩展它以添加特定于该模式的查询。它是一种向现有类型添加功能而不是创建新类型的机制。

GraphQL本质上不支持继承。但是,如果您使用的是GraphQL-JS,则有一个库确实添加了此功能。链接到这里。它既添加了泛型类型,又为类型提供了从另一类型继承的方式。