跟许多类型系统一样,GraphQL 支持接口。一个接口是一个抽象类型,它包含某些字段,而对象类型必须包含这些字段,才能算实现了这个接口。

    例如,你可以用一个 接口用以表示《星球大战》三部曲中的任何角色:

    例如,这里有一些可能实现了 Character 的类型:

    可见这两个类型都具备 Character 接口的所有字段,但也引入了其他的字段 、starshipsprimaryFunction,这都属于特定的类型的角色。

    注意下面例子的查询会产生错误:

    hero 字段返回 类型,取决于 episode 参数,它可能是 Human 或者 Droid 类型。上面的查询中,你只能查询 接口中存在的字段,而其中并不包含 primaryFunction

    你可以在查询指南的 章节了解更多相关信息。