枚举类型的JSON属性不喜欢"null"检查



在我的Angular应用程序中,我有一个非常简单的enum,名为AlertType。我还有一个API响应对象,它的一个属性是enum类型。如下所示:

export class ScanAlertModel {
public alertId: string;
public alertType: AlertType
}

在某些情况下,未设置此alertType属性。我正在尝试使用Jasmine测试这些。在我的Angular应用程序中,为了能够为没有连接alerttypealert过滤Array<AlertModel>,我只需应用如下过滤器:

this.scanAlerts.filter((a) => ((a.alertType === null)

这还可以。但是,当我的JSON包含根本没有alertTypeScanAlertModel实体时,我尝试测试这种过滤(作为更大功能测试的一部分(的测试无法正确过滤出记录。

很明显,这让我很困惑。任何帮助都将不胜感激。谢谢

首先,如果alertType有时不存在,则用:?将其声明为可选,如下所示:

export class ScanAlertModel {
public alertId: string;
public alertType?: AlertType;
}

过滤器不总是工作的原因是,如果属性未设置,它将不会严格等于null

更好的检查方法是使用hasOwnProperty():

this.scanAlerts.filter(alert => !alert.hasOwnProperty('alertType'));

相关内容

  • 没有找到相关文章

最新更新