继承已实现类型 graphql 中的接口字段
Inherit interface fields in implemented types graphql
我有一个界面
interface Book {
field1: String
field2: String
field3: String
# it has 10 fields
}
我想用 10 种不同的类型来实现它。我怎样才能避免处理所有字段并粘贴到实现该接口的类型中
例如,我可以这样做吗:
type textBook implements Book{
...Book Fields
}
没有语法可以帮助您避免重复。如果接口定义了一个字段,则实现该接口的每个类型都必须显式定义该字段。充其量,如果您使用 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.
}
我有一个界面
interface Book {
field1: String
field2: String
field3: String
# it has 10 fields
}
我想用 10 种不同的类型来实现它。我怎样才能避免处理所有字段并粘贴到实现该接口的类型中
例如,我可以这样做吗:
type textBook implements Book{
...Book Fields
}
没有语法可以帮助您避免重复。如果接口定义了一个字段,则实现该接口的每个类型都必须显式定义该字段。充其量,如果您使用 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.
}