GraphQL:接口可以用于统一两个等效属性名称不同的类型吗?

时间:2019-05-16 03:46:21

标签: graphql

假设我的模式包括两种类型:

type Dog {
    breed: String
}

type Cat {
    breedName: string
}

是否有一种方法可以定义同时扩展DogCat且具有用于繁殖的字段的接口,即使该字段在两种类型中具有不同的名称?我怀疑答案是否定的,但是起初我以为字段别名可能在这里起作用。是的,我意识到您可以同时更改两种类型的字段名称,但是我正在寻找一种替代方法,因为在我的实际用例中,此时类型不能更改。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在查询字段时使用别名,但总之,无论接口在接口中调用什么字段,都必须在实现类型中将其称为别名。 spec对此要求非常明确:

  

对象类型必须是它实现的所有接口的超集...对象类型必须为接口中定义的每个字段包含一个具有相同名称的字段。

您可能会考虑使用联合而不是接口,从而仍然可以获得拥有抽象类型的好处,而不必实现特定的字段。或者只是从界面中完全忽略breed字段。