我是 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);
为什么在 Flow 中访问 foo[0][0].bar
是正确的,而我已经明确了 foo
的类型?
同样,我通过 flow-typed
安装了 lodash
,但是 grouped["2017-01-01"].bar
似乎在 Flow 中完全没问题吗?
最佳答案
你的第一个数组索引示例看起来像这个错误: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 .
关于javascript - 流类型检查问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45975827/