-2

我在 Angular 中使用严格模式,现在这是错误的原因。我正在将 Angular 8 项目迁移到 Angular 13。

for (const [key, value] of Object.entries(obj)) {

  
   if(obj[key] == false){ //key may be not a property of object
      delete obj[key];
   }

 }
4

1 回答 1

0

编辑:在我意识到什么是严格模式之前,该行下方的部分仅处理可能的逻辑错误

您的程序在这里遇到的问题可能是 Angular 中的严格模式使用了更严格的类型检查,而您的代码正在做一些导致类型错误的事情。有关严格模式,请参阅typescript 配置文档


如果你想测试一个属性是否在给定的对象中,你应该使用key in obj,否则它对相反的测试是否定的。

在您的示例中,您正在遍历对象的条目,根据定义,这些条目仅包含对象的属性。obj[key]还获取该键的值,使其等效于value.

您可能想要做的是遍历对象并删除不是另一个对象的属性的属性。

for (const [key, value] of Object.entries(obj)) {
    if(!(key in otherObj)){
        delete obj[key];
    }
}
于 2021-11-21T13:51:48.763 回答