有人可以帮助我澄清为什么在这种情况下,Typescript确实确实会缩小类型的范围:
缩放范围缩小到您期望拥有的任何非零值的价值
const subCollectionId = collection.subcollection?.id
{subcollectionId && (<Text>{subcollectionId}<Text/>)}
但不是In
collection.subcollection?。{collection.subcollection?.id && (<Text>{collection.subcollection?.id}<Text/>)}
<Text>{collection.subcollection?.id}<Text/>
在我的测试中
collection.subcollection?.id
仍然可以是无效的值,但如果我声明一个额外的变量。
作为程序员,您可能会合理地说
const collection = {
get subcollection() {
return Math.random() > 0.5 ? undefined : { id: 'foobar' }
}
}