Как обрабатывать типы союзов глобально, такие как apollo-клиент?. Typescript выдает свойство «URL», которое не существует в типе «Носитель» для объединения graphql

#typescript #apollo-client #graphql-js #react-query #prisma-graphql

Вопрос:

У меня есть объединение type Media = Image | Emoji , и я использую его для многих различных и глубоко вложенных объектов в моей схеме graphql. Я также использую генератор кода graphql для генерации типов. Я использовал apollo-клиент для обработки своих запросов, и он обрабатывал типы союзов, как заклинание в кэше.

 const cache = new InMemoryCache({
    possibleTypes: {
      Media: ['Image', 'Emoji'],
      ...
 

Но по какой-то причине мне пришлось перейти на react-запрос и graphql-запрос, и теперь каждый раз, когда я хочу использовать object.logo: Media , например, и этот логотип может иметь разные типы, но typescript выдает эту ошибку:

 Property 'url' does not exist on type 'Media'.
  Property 'url' does not exist on type 'Emoji'.
 

Я не хочу каждый раз проверять тип и приводить его, поэтому мне интересно, как я могу реализовать это глобально, как это сделал apollo-клиент?