代码之家  ›  专栏  ›  技术社区  ›  Ryan Wheale

FlowJS-不识别可选字段上何时有值

  •  0
  • Ryan Wheale  · 技术社区  · 6 年前

    我有以下类型定义(注意 path

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

    路径 有一个值:

    const meta: MyType = {
      name: 'Foo',
      path: []
    }
    
    meta.path.unshift('bar');
    

    在上面的例子中 meta.path 有一个值,但flow抱怨它不能在undefined上调用“unshift”。我明白了 undefined 是的有效值 ,但在这种情况下 路径 一定地 有100%的时间值。解决这个问题的唯一方法是使用这个完全不必要的代码:

    (meta.path || []).unshift(...);
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   foxes    6 年前

    Flow只知道 const meta 属于类型 MyType 我的类型 path 路径

    如果你愿意的话 路径 ,您需要将它包装在某种if检查或类似于您所做的操作中。