打字稿布尔比较给出了错误的结果

时间:2019-01-09 11:45:07

标签: angular typescript

我有一个奇怪的问题:在我的一个类中,有一个boolean类型的只读属性。当我尝试检查此属性时,得到了意外的结果。这是一个代码示例:

// vorgang is a reference to the class, isEK is the property
let test = this.vorgang.isEK;
// Just for testing
let test2 = test ? true : false;
console.log(test + ' -> ' + test2);

这是结果输出:

true -> true
false -> true

我想念什么?

3 个答案:

答案 0 :(得分:0)

  

在字符串的情况下可能会发生。您的this.vorgang.isEK可能是字符串。

如果是这样,只需将您的let test2 = test ? true : false;行替换为let test4 = test3 == true ? true : false;,其中 ==仅检查值,而不检查数据类型

您的工作片段类似于以下内容-

// getting it static
let test = "false";
// Just for testing
let test2 = test == true ? true : false;
console.log(test + ' -> ' + test2);

答案 1 :(得分:0)

这是一个布尔属性:

get isEK(): boolean {
  return this.art && this.art.netto;
}

我的比较不起作用时,输出正确。这让我发疯了。

答案 2 :(得分:0)

只有一种可能的解释:在运行时,Realm变量包含字符串test

'false'

尝试对属性let test = 'false'; let test2 = test ? true : false; console.log(test + ' -> ' + test2); // false -> true 使用此代码:

isEK

您还可以在运行时使用以下命令检查变量类型:

get isEK(): boolean {
  return this.art && this.art.netto ? true : false;
}