我是Flow的新手,我想知道为什么一对夫妇基本的'问题不会在Flow中提出任何警告:
let foo: Array<{| id: string, occursOn: string |}>;
foo = [{ id: "5", occursOn: "2017-01-01" }];
// Not a flow error!
console.log(foo[0][0].bar);
const grouped = groupBy(foo, "occursOn");
// Not a flow error!
console.log(grouped["2017-01-01"].bar);
为什么在我明确foo[0][0].bar
的类型时,在流程中访问foo
确定?
同样,我通过lodash
安装了flow-typed
,但grouped["2017-01-01"].bar
似乎在Flow中完全没问题了吗?
答案 0 :(得分:1)
你的第一个数组索引示例似乎是这个错误:https://github.com/facebook/flow/issues/4257
对于groupBy
,很可能你刚刚没有告诉Flow groupBy
做了什么。我假设你正在做
import { groupBy } from 'lodash';
默认情况下,Flowtype无法知道lodash
模块是什么或它的功能是什么,所以you need to install type definitions for Lodash,并希望你没有使用过多的运行时魔术它会给你一个合理的签名。
对于您的情况,当Flow知道它是什么类型时,您确实会收到错误which you can see here。