深入理解TypeScript
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 相等

在JavaScript中需要注意的一点是==与===的区别。在使用==比较两个变量时,会发生隐式类型转换,例如,自动将字符串类型转换为数字类型。因此,为了避免隐式类型转换带来的问题,可以使用===进行比较。

在JavaScript自动进行隐式类型转换时,它的选择并不总是理想的。例如,在下面的例子中,对""和 "0"进行比较,无论用==,还是用===,结果都是false。因为""和"0"都是字符串类型的,并且显然是不相等的。但是对比0和""时,0和""都是逻辑的false。因此,在使用==时,结果是true;而在使用===时,结果则是false。

注意:在TypeScript中,string类型的数据==number类型的数据,以及string类型的数据===number类型的数据,都会在编译时报错。因此,你完全不必担心因隐式类型转换而引发的问题。

与==和===类似,!=和!==也存在同样的问题。因此,除了空检查,推荐使用===和!==,接下来我们将会讲解它们。

严格的相等

如果需要比较两个对象是否相等,仅仅使用==或===是不够的,示例如下。

为了做这种检查,我们需要使用deep-equal(详见参考资料[2])的npm包(安装命令为npm install deep-equal),如下所示。

但是,通常你不需要做这种深度的检查,你真正需要做的是检查一些id,示例如下。