У меня есть проблема, когда мне нужно создать запрос, который будет возвращать различные возможные типы для узла, я также использую свойство __typename, чтобы определить, какой из них я получил.
Причина, по которой я не используютип EnumType объясняется тем, что различные подтипы могут сильно различаться.
Некоторые из них пусты (например, они не обладают какими-либо свойствами).
Это вызывает проблему, поскольку я не могу создать UnionType.
Я пытался использовать ScalarTypes для этих пустых определений, но для Union я могу использовать только ObjectTypes, для которых требуется определение 'fields'.
Например, вот некоторые определения классов Iиспользуется со стороны сервиса
classA {
token: string
}
classB {
}
classC {
}
type returnType = classA | classB | classC
Для каждого из них я определяю тип
typeA = GraphQLObjectType ofType classA with fields => {token}
typeB = GraphQLObjectType ofType classB with fields => undefined
typeC = GraphQLObjectType ofType classC with fields => undefined
Проблема возникает при построении типа объединения для запроса
new GraphQLUnionType({
types: [typeA, typeB, typeC]
})
Я хотел бы знать, как правильно обращаться с этим сценарием, от клиента, я просто хотел бы сделать что-то вроде
query {
myquery {
mode: __typename
... typeA {
token
}
}
Я пытался ввестия как свойство, и это работает, потому что каждый тип будет иметь, но это избыточно.