Ковариантные типы потоков, генерируемые мутацией реле по сравнению с нековариантными в запросах

У меня есть некоторые проблемы с некоторыми типами, сгенерированными компилятором, особенно между запросом и результатом мутации, которые в конечном итоге приводят к одному и тому же типу. Один вроде как:

fragment Foo on MyType {
  createdAt
  hidden
  locked
}

query {
  foo(...) {
     id
     ...Foo
  }
}

И это генерирует ковариантные свойства:

export type Foo = {|
  +createdAt: any,
  +hidden: boolean,
  +locked: boolean
|};

И в другом месте у меня есть:

mutation doSomething(...) {
  clientMutationId
  foo {
    createdAt
    hidden
    locked
  }
}

Который будет генерировать типы:

export type DoSomething_foo = {
    createdAt: any
    hidden: boolean
    locked: boolean 
}

Поэтому, когда я попробую сопоставить результат foo мутации и вызова этого фрагмента запроса commitЯ получаю ошибку:

тип объекта. Ковариантное свойство platform несовместим с инвариантным использованием в

1 ответ

Решение

Попробуйте принудительно привести вашу переменную:

const a = { ... } : MyForceCast

Иногда Flow не может выбрать правильный тип, когда вы их смешиваете.

Другие вопросы по тегам