Ковариантные типы потоков, генерируемые мутацией реле по сравнению с нековариантными в запросах
У меня есть некоторые проблемы с некоторыми типами, сгенерированными компилятором, особенно между запросом и результатом мутации, которые в конечном итоге приводят к одному и тому же типу. Один вроде как:
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 не может выбрать правильный тип, когда вы их смешиваете.