Как вы определяете форму структуры данных Immutable.JS, сгенерированной из fromJS
с использованием Flow? Простые старые JS сгустки могут быть набраны очень точно с помощью литерала объекта обозначения:Поток: Typechecking комплекс Неизменяемая форма с использованием JS()?
type ObjectShape = {
a: number,
b: string,
c: {
d: number,
},
e: Array<number>
};
const obj: ObjectShape = { // hyper-accurate
a: 1,
b: '2',
c: {
d: 3,
},
e: [4]
}
Однако на стороне Immutable.js, кажется, есть два основных осложнения:
Оно кажется, что Неизменный метод .js в
fromJS
возвращаетany
(https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow#L764), так что следующий не зацепила как ошибка в потоке:const map: boolean = fromJS(obj) // this is totally not true, but Flow can't tell
Похоже, что формы карты нельзя описать, используя объектно-ориентированную нотацию за How to describe Immutable.js Map shape with Flow (или эта информация устарела?).
Я искренне растерялся о том, как получить Flow для понимания Immutable.js, в частности карт. Из того, что я могу сказать, Flow теряет много информации о кодовой базе данных, когда данные живут в структурах Immutable.js вместо простых примитивов JS.
Что касается https://github.com/flowtype/flow-typed, вы можете просто загрузить определение типа карты –
Нет определений для immutabe.js при типизированном потоке, они включаются непосредственно в файл immutable.js пакет от npm. Однако определение карты, включенное в файл immutable.js, прямо сейчас не позволяет вам определить форму: https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow# L489 –