在实现的类型graphql中继承接口字段
Posted
技术标签:
【中文标题】在实现的类型graphql中继承接口字段【英文标题】:Inherit interface fields in implemented types graphql 【发布时间】:2020-06-17 05:57:42 【问题描述】:我有一个界面
interface Book
field1: String
field2: String
field3: String
# it has 10 fields
我想以 10 种不同的类型实现它。我怎样才能避免处理所有字段并粘贴到实现该接口的类型中
例如,我可以这样做吗:
type textBook implements Book
...Book Fields
【问题讨论】:
【参考方案1】:没有语法可以帮助您避免重复。如果接口定义了字段,则实现该接口的每个类型都必须显式定义该字段。充其量,如果您使用graphql-tag
创建类型定义,则可以使用插值使事情变得更干,但我个人认为降低代码的可读性并不值得。这也意味着您不能将类型定义放在单独的 .graphql
文件中。
const sharedFields = `
a: String
b: String
`
const typeDefs = gql`
type A
$sharedFields
type B
$sharedFields
`
如果共享字段在概念上是相关的,您还可以考虑将它们设为单独的类型。
interface Book
bookFields: BookFields
type BookFields
field1: String
field2: String
field3: String
# etc.
【讨论】:
以上是关于在实现的类型graphql中继承接口字段的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL Relay 自省查询失败:“查询”类型上的未知字段“__type”