首页 > 解决方案 > 为什么需要使用'==='来比较打字稿中的枚举?

问题描述

我尝试使用 '==' 来比较枚举,但效果不佳。

if (data.event == ModalEventsEnum.SUBMIT) {
       this.calculatePorcentage();
}

this.calculatePorcentage() 函数未执行。

标签: angulartypescript

解决方案


假设您已经知道比较运算符“==”和“===”是如何工作的(请参阅上面@edtheprogrammerguy 提供的链接),让我们关注 TypeScript 中枚举的其他方面。

如果在定义枚举时未指定其他类型,则默认情况下枚举是数字,我将假设您的答案是数字。

使用枚举时,有时存储的值不是枚举数值,而是枚举元素名称。这通常是在 UI 中捕获数据时。当在服务中接收到值时,主要是在后端服务中,我们将值与枚举常量进行比较。

在这个片段中,比较将失败,无论是 '==' 还是 '===',因为我们正在将字符串“SUMMIT”与类似 1 的数字进行比较(假设 SUMMIT 是第一个元素):

// For example: assuming data.event = "SUMMIT", instead of data.event = 1
if (data.event == ModalEventsEnum.SUBMIT) {
       this.calculatePorcentage();
}

您需要检查您在“data.event”属性中收到的数据(字符串或数字)。


推荐阅读