为什么需要使用'==='比较打字稿中的枚举?

时间:2019-07-11 20:55:47

标签: angular typescript

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

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

this.calculatePorcentage()函数未执行。

1 个答案:

答案 0 :(得分:0)

假设您已经知道比较运算符“ ==”和“ ===”“的工作原理(请参见上面@edtheprogrammerguy提供的链接),则可以着重于TypeScript枚举的其他方面。

如果在定义枚举时未指定其他任何类型,则默认情况下,枚举为数字,为此,我将假定您的数字为数字。

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

在此代码段中,比较将失败,或者使用'=='或'===',因为我们正在比较字符串“ SUMMIT”和一个类似1的数字(假设SUMMIT是第一个元素):

import tkinter as tk

class GUI(tk.Frame):
  def __init__(self, master, *args, **kwargs)
    tk.Frame.__init__(self, *args, **kwargs)
    self.master = master

    self.update = Label(self.master, "Select a value", 0, 0)

    btn = tk.Button(text="Select", command=self.update_btn)
    btn.grid(row=0, column=1)

  def update_btn(self):
    # Destroy method being called here
    self.update.destroy()
    self.update = Label(self.master, "New value", 0, 0)

class Label(tk.Label):
  def __init__(self, root, label_name, row, col, *args, **kwargs):
    tk.Label.__init__(self, *args, **kwargs)
    label = tk.Label(root, text=label_name, *args, **kwargs)
    label.grid(row=row, column=col)

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