在GraphQL

时间:2018-06-26 14:41:07

标签: graphql

在我的一个使用GraphQL的项目中,我定义了一个具有相同字段的typeinput

例如。

type SomeType {
    name: String
    id: String
}

input SomeInput {
    name: String
    id: String
}

这似乎是多余的,因为我必须两次定义相同的字段。是否可以定义一组字段并使SomeTypeSomeInput包含这些字段?这将类似于面向对象编程中的继承,在继承中您将有一些基础,并且理想情况下,每个基础都将从其继承。

例如,它可能看起来像:

SomeBase {
    name: String
    id: String
}

type SomeType extends SomeBase {}

input SomeInput extends SomeBase {}

这可能吗?如果是这样,您将如何实现?

谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定graphql是否支持继承,但是有接口。在您的示例中:

interface IUser {
  name: String!
  id: String!
} 

type User implements IUser {
  name: String
  id: String
}

type UserInput implements IUser {
  name: String
  id: String
}

这肯定不会减少样板,但至少会确保您可以为这些类型维护通用合同。