Я работаю над следующими типами, где «содержание» «Комментария» является типом объединения:
type TextContent {
text: String
}
type RichContent {
participants: [String]
startTime: String
}
union Content = TextContent | RichContent
type Comment {
id: ID
sender: String
content: Content
}
type Review {
id: ID
title: String
lastComment: Comment
}
В моем запросе Apollo я пытался использовать условные фрагменты для двух типов контента:
query listOfReviews {
reviews {
...reviewFields
}
}
fragment reviewFields on Review {
id
title
lastComment {
content {
... on TextContent {
text
}
... on RichContent {
participants
startTime
}
}
}
}
Я получил ошибку времени выполнения, когда Apollo, кажется, пытается получить доступ к полю «участники» со значением «undefined», где фактический объект содержимого:
{
__typename: "TextContent:,
text: "abc"
}
Похоже, что два типа объединенного содержимого объединены.
Мой вопрос: можно ли использовать условия типа для вложенных полей в запросах Apollo? Или условия типа должны использоваться для типов верхнего уровня, возвращаемых запросами? Если это разрешено, как мне исправить свои типы / запросы?
Большое спасибо!


@ const86 помогла указать, что это связано с этой ошибкой: https://github.com/apollographql/apollo-link-state/pull/258.