我在 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];
}
}
我在 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];
}
}
编辑:在我意识到什么是严格模式之前,该行下方的部分仅处理可能的逻辑错误
您的程序在这里遇到的问题可能是 Angular 中的严格模式使用了更严格的类型检查,而您的代码正在做一些导致类型错误的事情。有关严格模式,请参阅typescript 配置文档。
如果你想测试一个属性是否在给定的对象中,你应该使用key in obj
,否则它对相反的测试是否定的。
在您的示例中,您正在遍历对象的条目,根据定义,这些条目仅包含对象的属性。obj[key]
还获取该键的值,使其等效于value
.
您可能想要做的是遍历对象并删除不是另一个对象的属性的属性。
for (const [key, value] of Object.entries(obj)) {
if(!(key in otherObj)){
delete obj[key];
}
}