Javascript 检查布尔值时Typescript失败
我在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,
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,请确保尽可能限制任何类型的使用。