Reactjs 为什么TypeScript不处理存储在变量中的布尔值?
考虑以下两个代码段:Reactjs 为什么TypeScript不处理存储在变量中的布尔值?,reactjs,typescript,boolean,Reactjs,Typescript,Boolean,考虑以下两个代码段: if(!requiredProp) { return null; } return <Component requiredProp={requiredProp} /> if(!requiredProp){ 返回null; } 返回 const dontRenderComponent=!必需道具 if(dontRenderComponent){ 返回null; } 返回 对我来说,它们实际上是相同的代码。 然而,在第二种情况下,TypeScript抱怨
if(!requiredProp) {
return null;
}
return <Component requiredProp={requiredProp} />
if(!requiredProp){
返回null;
}
返回
const dontRenderComponent=!必需道具
if(dontRenderComponent){
返回null;
}
返回
对我来说,它们实际上是相同的代码。
然而,在第二种情况下,TypeScript抱怨requiredProp
可能是未定义的
为什么会这样,这能以某种方式解决吗?我不想使用非空断言运算符,因为这可能会使以后更难捕获其他情况,其中所需的prop实际上是未定义的
(当条件更改时)
TS版本:4.0.3Typescript无法根据与某些不同变量的比较缩小requiredProp
类型,这是其当前的实现限制。因此,除了使用非空断言之外,没有办法解决此问题?IRL我的条件更复杂,我想把它们分配给变量,这样就不会到处重复它们。
const dontRenderComponent = !requiredProp
if(dontRenderComponent) {
return null;
}
return <Component requiredProp={requiredProp} />