流程Typechecking问题

时间:2017-08-31 07:36:36

标签: javascript flowtype

我是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中完全没问题了吗?

1 个答案:

答案 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