我具有以下类型定义(请注意path
是可选的):
type MyType = {
name: string,
path?: Array<string>
};
然后在我的代码中,某些地方path
肯定具有值:
const meta: MyType = {
name: 'Foo',
path: []
}
meta.path.unshift('bar');
在上面的示例中,meta.path
有一个值,但是流程抱怨它无法在未定义的情况下调用“ unshift”。我得到undefined
是path
的有效值,但是在这种情况下,path
肯定的值为100%。解决此问题的唯一方法是使用此完全不必要的代码:
(meta.path || []).unshift(...);
答案 0 :(得分:1)
所有Flow都知道const meta
的类型为MyType
,而MyType
的{{1}}是可选的。它不知道path
是否存在,因此它正确地引发了该错误。
如果要使用path
,则需要用某种if检查或类似的方法将其包装起来。