簡體   English   中英

屬性無效性檢查不適用於迭代

[英]Property nullity check doesn't work on iteration

在下面的代碼中, ab.bv檢查不適用於迭代ab.bv 但是,它可以訪問ab.bv的元素。 if (ab.bv)檢查是否沒有檢查ab.bv的無效性?

type B = {|
    bv: ?B[], 
|}

const c: B => void = n => {}

let ab: B = {bv: []}
if (ab.bv) {
  for (const v2 in ab.bv) { // Error in ab.bv: cannot iterate using a `for...in` statement because array type [1] is not an object, null, or undefined. [invalid-in-rhs]
    c({...ab})
  }
  c({...ab.bv[0]}) // Works
}

細化有效,只是錯誤有點不清楚。 Flow 試圖告訴您應該使用for...of來迭代數組而不是for...in (因為您將獲得索引而不是數組項):

let ab: B = {bv: []}
if (ab.bv) {
  for (const v2 of ab.bv) { // Works
    c(v2)
  }
  c({...ab.bv[0]}) // Works
}

嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM