FlowJS-无法识别可选字段上是否有值

时间:2018-10-31 17:27:28

标签: javascript types flowtype

我具有以下类型定义(请注意path是可选的):

type MyType = {
  name: string,
  path?: Array<string>
};

然后在我的代码中,某些地方path 肯定具有值:

const meta: MyType = {
  name: 'Foo',
  path: []
}

meta.path.unshift('bar');

在上面的示例中,meta.path有一个值,但是流程抱怨它无法在未定义的情况下调用“ unshift”。我得到undefinedpath的有效值,但是在这种情况下,path 肯定的值为100%。解决此问题的唯一方法是使用此完全不必要的代码:

(meta.path || []).unshift(...);

1 个答案:

答案 0 :(得分:1)

所有Flow都知道const meta的类型为MyType,而MyType的{​​{1}}是可选的。它不知道path是否存在,因此它正确地引发了该错误。

如果要使用path,则需要用某种if检查或类似的方法将其包装起来。