[英]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.