javascript - 流类型检查问题

标签 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);

为什么在 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/

相关文章:

javascript - 在jsp上显示时钟

javascript - 事件监听器触发错误的目标/函数在错误的时间执行

javascript - 搜索 document.innerHTML

javascript - JS 流 : What is the most clean and concise way to define an enum that is also treated like a type

javascript - 如何声明一组匹配文件的导出类型?

Javascript onchange 函数在移动设备上的选择菜单中不起作用

javascript - 如何为流类型设置 'rest' 参数

atom-editor - 核素流未在 Atom 中显示错误

reactjs - 在React组件Props中使用通用流类型并实例化通用组件>

javascript - 如何计算一段 JavaScript 代码使用了多少处理能力?