首页 > 解决方案 > 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(...);

标签: javascripttypesflowtype

解决方案


所有 Flow 都知道那const meta是 type MyType,并且 that MyTypehas pathwhich 是可选的。它不知道是否path存在,所以它正确地抛出了那个错误。

如果需要path,您需要将其包装在某种 if 检查或类似于您所做的事情中。


推荐阅读