Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript typescript中可能有未定义值的逻辑运算符_Javascript_Typescript - Fatal编程技术网

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&&(
{说明}
)}
错误

  • “string | undefined”类型的参数不可分配给“string”类型的参数。“undefined”类型不可分配给“string”类型

  • 这段代码没有问题,但我假设在实际代码中,您在某个地方使用了
    说明
    ,该地方需要一个合适的字符串,并且在那里发出错误信号。当您添加
    说明和
    时,它起作用的原因是,在这种情况下,它的类型在
    &
    的右侧变窄了


    对于
    description和&SOME\u EXP
    ,TypeScript将
    description
    的类型从
    string | undefined
    缩小为
    string
    内部
    SOME\u EXP
    ,因为它可以静态地确定
    description
    不会在那里被定义。这仅在直接在左侧si中使用变量时才有效但是,
    &&
    表达式的de,因此将其赋给常数并使用该常数将不起作用。

    您能解释一下这行是什么吗:
    {showsdescription&({description}}
    ?是object还是其他内容?它只返回一个div,其中包含一些文本,但我注意到需要更新错误,因为我包含了其他内容的错误。未定义的对象与另一个问题有关。我的错误。第一个错误仍然适用。顺便说一句,感谢我所需要的解释,我没有意识到类型会变窄真的很困惑!!