details.features.has 不是函数

details.features.has is not a function

我正在使用 angular 13 和 es2021(也尝试过 es6 添加 2018)

tsconfig.lib.json

...
"lib": ["dom", "es2021"]
...

我有以下对象。

export interface UserDetails {
  ...
  features?: Set<UserFeature>;
  ...
}

我正在尝试检查以下一些值:

this.sessionQuery.details$.subscribe((details: UserDetails) => {
      const enableFF = details.features && (details.features as Set<UserFeature>).has({ feature: 'enableFF ', enabled: true });
 ...
    });

IDE 上没有问题,但我在浏览器上遇到以下问题:

core.mjs:6495 ERROR TypeError: details.features.has is not a function

您在订阅(下一个)中收到的对象有可能没有通过 features 作为 Set。然后你告诉 typescript 将你的 features 视为 Set,并且这样做,你为此类运行时异常打开你的代码。

如果无法在您的订阅中接收实际的 Set 对象,您将不得不实例化一个包含您的数据的集合或调整您的逻辑以不依赖于 Set 方法。