javascript - FlowJS - 无法识别可选字段何时有值
问题描述
我有以下类型定义(注意这path
是可选的):
type MyType = {
name: string,
path?: Array<string>
};
然后在我的代码中,我有一些path
绝对有价值的地方:
const meta: MyType = {
name: 'Foo',
path: []
}
meta.path.unshift('bar');
在上面的例子meta.path
中有一个值,但是 flow 抱怨它不能在 undefined 上调用“unshift”。我知道这undefined
是 的有效值path
,但在这种情况下,path
肯定有 100% 的时间值。修复它的唯一方法是这个完全不必要的代码:
(meta.path || []).unshift(...);
解决方案
所有 Flow 都知道那const meta
是 type MyType
,并且 that MyType
has path
which 是可选的。它不知道是否path
存在,所以它正确地抛出了那个错误。
如果需要path
,您需要将其包装在某种 if 检查或类似于您所做的事情中。
推荐阅读
- javascript - 在鼠标移动时增加两个 div 的高度
- sql - 比较两行与不同列中的匹配字段值
- python-3.x - spaCy is_oov 没有按预期工作
- mysql - 如何通过 node.js 提高 mysql 查询性能?
- html - 如何在知道容器和盒子的大小的情况下找到容器内每个盒子的百分比(6)
- javascript - 应用于 .ChartWrapper() 元素时的 Google Visualization .getSelection() 错误
- java - 如何使用按钮显示字符串并更改为下一个字符串(在列表中)?
- python - python异步http请求
- regex - Notepad ++中的命名捕获组不返回捕获值
- git - Git - 恢复提交