使用React上的逻辑连词在打字稿上缩小了nullish的价值

问题描述 投票:0回答:1

有人可以帮助我澄清为什么在这种情况下,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

仍然可以是无效的值,但如果我声明一个额外的变量。

	

作为程序员,您可能会合理地说
javascript reactjs typescript jsx
1个回答
0
投票
是一个恒定的表达式,但TSC无法证明这一点。主要是因为物业访问可能涉及getter。考虑类似:

const collection = {
  get subcollection() {
    return Math.random() > 0.5 ? undefined : { id: 'foobar' }
  }
}


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.