首页 文章

如何修复数组中的流类型长度错误?

提问于
浏览
0

让我的代码如下所示

//@flow
type something = (input:Array<{data:?number}|{data<Object>}>) => boolean

function some:something(own){
 if(!own[0].data.length)
  return false
}

我收到消息:属性 length ,属性无法访问可能空值null或未定义

该如何修复?因为在函数中有些可以解析1.具有内部对象或可能不是对象的数组 . 2.具有内部Object和Object的数组可以是具有Object of Array或Array of null / undefine的数据3.如何像这样声明流类型中的长度

1 回答

  • 0

    flow给出了一个错误,因为你试图访问 data 上的属性 length - 你声明它可能是未定义的...所以你需要"instruct"你检查过的流:

    function some:something(own){
     if(own[0].data && !own[0].data.length) // if an data property exists AND is not an array
      return false
    }
    

    顺便说一句,如果您只是尝试检查 own[0].data 是否只是一个数组:

    if(Array.isArray(own[0].data)) {
    

相关问题