Без этого правила именованные и встроенные фрагменты могут вести себя одинаково, и это может иметь смысл, если вы больше задействовали фрагменты «получить общие биты» для типов интерфейса или объединения.Если вы разделите запрос следующим образом:
fragment SearchResultBits on SearchResult {
...on Droid { appearsIn }
# could have parts for other union choices too
}
query DoSearch($text: String!) {
search(text: $text) { ... SearchResultBits }
}
Тогда в вашем запросе очень разумно повторно использовать (именованное) SearchResultBits
query FromQuestion {
search(text: "an") {
... on Human {
name
... SearchResultBits
}
# or return nothing for non-humans
}
}
, так как ссылка на именованный фрагмент иоба встроенных фрагмента ведут себя одинаково, здесь вы получите одинаковый результат.Кажется более разумным, чтобы ссылка на этот именованный фрагмент была законной, и поэтому нет веской причины запрещать эквивалентный встроенный фрагмент.