Javascript typescript中可能有未定义值的逻辑运算符
我犯了一个错误,我不完全明白为什么。我知道它可能是未定义的,因此我需要检查它是否存在,但是如果我按照下面的方式设置代码,那么我会得到错误。但是,如果我用Javascript typescript中可能有未定义值的逻辑运算符,javascript,typescript,Javascript,Typescript,我犯了一个错误,我不完全明白为什么。我知道它可能是未定义的,因此我需要检查它是否存在,但是如果我按照下面的方式设置代码,那么我会得到错误。但是,如果我用{isFeatureBlock&&description&&&内联替换{showDescription&&&,它会很好地工作。如果我将它分配给常量,为什么它不工作? 注:我已简化为关注主要问题 代码 isFeatureBlock是一个布尔值,description是可选字符串 const showDescription = isFeatureBl
{isFeatureBlock&&description&&&
内联替换{showDescription&&&
,它会很好地工作。如果我将它分配给常量,为什么它不工作?
注:我已简化为关注主要问题
代码
isFeatureBlock
是一个布尔值,description
是可选字符串
const showDescription = isFeatureBlock && description
{showDescription && (
<BlockDescription>
{description}
</BlockDescription>
)}
const showsdescription=isFeatureBlock&&description
{showDescription&&(
{说明}
)}
错误
这段代码没有问题,但我假设在实际代码中,您在某个地方使用了
说明,该地方需要一个合适的字符串,并且在那里发出错误信号。当您添加说明和时,它起作用的原因是,在这种情况下,它的类型在&
的右侧变窄了
对于description和&SOME\u EXP
,TypeScript将description
的类型从string | undefined
缩小为string
内部SOME\u EXP
,因为它可以静态地确定description
不会在那里被定义。这仅在直接在左侧si中使用变量时才有效但是,&&
表达式的de,因此将其赋给常数并使用该常数将不起作用。您能解释一下这行是什么吗:{showsdescription&({description}}
?是object还是其他内容?它只返回一个div,其中包含一些文本,但我注意到需要更新错误,因为我包含了其他内容的错误。未定义的对象与另一个问题有关。我的错误。第一个错误仍然适用。顺便说一句,感谢我所需要的解释,我没有意识到类型会变窄真的很困惑!!