Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么TypeScript不处理存储在变量中的布尔值?_Reactjs_Typescript_Boolean - Fatal编程技术网

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.3

Typescript无法根据与某些不同变量的比较缩小
requiredProp
类型,这是其当前的实现限制。因此,除了使用非空断言之外,没有办法解决此问题?IRL我的条件更复杂,我想把它们分配给变量,这样就不会到处重复它们。
const dontRenderComponent = !requiredProp
if(dontRenderComponent) {
  return null;
}

return <Component requiredProp={requiredProp} />