Jak sprawdzić poprawność kształtu struktury danych Immutable.JS wygenerowanej z fromJS
przy użyciu funkcji Flow? Plain Old plamy JS może być wpisany bardzo dokładnie przy użyciu obiektu dosłownego zapisu:Przepływ: Typechecking złożony niezmienny kształt przy użyciu fromJS()?
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]
}
Jednak na stronie Immutable.js, nie wydają się być dwie główne komplikacje:
Wydaje się, że Niezmienne
fromJS
metoda js wracaany
(https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow#L764), więc po nie zostanie złapany jako błąd przepływu:const map: boolean = fromJS(obj) // this is totally not true, but Flow can't tell
Wygląda na to, że kształty map nie mogą być opisane za pomocą notacji podobnej do obiektu na How to describe Immutable.js Map shape with Flow (lub czy ta informacja jest nieaktualna?).
Jestem autentycznie zdezorientowany, jak przekonać Flow do zrozumienia Immutable.js, w szczególności map. Z tego co wiem, Flow traci dużo inteligencji na temat kodu, gdy dane żyją w strukturach Immutable.js zamiast zwykłych prymitywów JS.
co z https://github.com/flowtype/flow-typed, można po prostu załadować definicję typu mapy –
Nie ma definicji dla immutabe.js na typie przepływu, są one zawarte bezpośrednio z immutable.js pakiet od npm. Jednak definicja Mapa dołączona immutable.js teraz nie wydaje się aby zdefiniować kształt: https://github.com/facebook/immutable-js/blob/master/type-definitions/immutable.js.flow# L489 –