angular - 为什么需要使用'==='来比较打字稿中的枚举?
问题描述
我尝试使用 '==' 来比较枚举,但效果不佳。
if (data.event == ModalEventsEnum.SUBMIT) {
this.calculatePorcentage();
}
this.calculatePorcentage() 函数未执行。
解决方案
假设您已经知道比较运算符“==”和“===”是如何工作的(请参阅上面@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”属性中收到的数据(字符串或数字)。
推荐阅读
- scala - 使用类型参数与抽象类型实现类型类
- android - 房间迁移 - 如何向现有表添加新的 NON-NULL 和字符串类型列
- arrays - 我们如何对 rust-ndarray 中的数组进行算术运算?
- powerbi - 我们可以用 Power BI 矩阵中的百分比计算度量吗
- android - 无法从“C:\Users\AndroidStudioProjects\Test\gradle\wrapper\gradle-wrapper.properties”加载包装器属性
- python - 尝试遵循这个交互式小部件教程
- scipy - scipy.optimize 中的约束抛出 x0 错误
- c# - gridview 同一单元格上的多个链接按钮 - 单击事件未触发 - c#
- c++ - CMAKE 检测编译器 ABI 失败
- matlab - 如何在转换数据类型之前重新缩放图像数据