Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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,我在typescript模块中有以下代码: if (!(wholeWords === true)) { console.log("Any part", wholeWords); } else { console.log("Whole word", wholeWords); } wholeWords参数在方法的参数列表中声明为布尔值。wholeWords:布尔型 在我的浏览器中,我看到以下内容: Any part true 这怎么可能 我怀疑wholeWords是字符串true,

我在typescript模块中有以下代码:

if (!(wholeWords === true)) { 
  console.log("Any part", wholeWords); 
} else { 
  console.log("Whole word", wholeWords); }
wholeWords参数在方法的参数列表中声明为布尔值。wholeWords:布尔型

在我的浏览器中,我看到以下内容:

Any part true

这怎么可能

我怀疑wholeWords是字符串true,而不是布尔值true

var wholeWords=true; 如果wholeWords===true{ console.logAny part,wholeWords; }否则{ console.log整个单词,wholeWords; } 通过使用===进行比较,您正在检查它是否为等值和等类型

尝试:

if (!(wholeWords == true)) { 
  console.log("Any part", wholeWords); 
} else { 
  console.log("Whole word", wholeWords);
}

旁注,为什么不把它写成wholeWords{}else{}-实际建议-你能在检查之前记录wholeWords吗?如果将wholeWords设置为true;就在逻辑之前,它能工作吗?在代码之前添加console.logtypeof wholeWords,看看它返回什么。我在胡乱猜测wholeWords在运行时实际上是字符串值true,如果您认为您已经保证wholeWords是布尔值,那么实际上并没有这样做。如果您需要更多帮助,请提供更多代码。我认为您是对的。我有一个角度下拉列表,如下所示:整词只有任何匹配,下拉列表绑定到过滤器中使用的布尔值。但是,我能够确认它正在传递字符串。然而,我很困惑。Typescript应该强制执行强类型。这里发生了什么?Typescript编译成没有类型的纯JS。因此,您的类型没有运行时强制。在本例中,可能发生的情况是,在某个地方,您有一个类型为any的值被分配给boolean。Typescript对此没有问题,因为any肯定可以是布尔值。但是,在这个例子中,结果是一个字符串。换句话说,为了最大限度地利用typescript,请确保尽可能限制任何类型的使用。