我试图从对象密钥收件人中删除,然后添加具有新值的收件人密钥。
这看起来很好:
this.alias.forEach((key) => {
delete key["recipients"];
key["recipients"] = this.newRecipients;
})
但是我得到了错误:
类型“别名”上不存在属性“ forEach”。
这是我的Alias模型:
export interface Alias {
nr?: number;
local_part?: string;
domain?: string;
recipients?: string;
}
并有声明:
alias: Alias = {};
应该如何?
答案 0 :(得分:2)
您的alias
不是数组(或NodeList
或类似的数组),这就是为什么它没有forEach
的原因。但是您不需要forEach
,没有理由循环代码。
您也无需在更改属性值之前删除它。只需直接分配给它即可:
this.alias.recipients = this.newRecipients;
您可能已经习惯了出于内存管理的原因必须删除字符串或类似内容的语言(例如,在C ++中为new
和delete
)。 JavaScript的delete
运算符根本不同于其他语言中的delete
运算符;它的目的完全不同。 (它从对象中删除了一个属性-您几乎不需要做这件事。)它不是用于内存管理。 JavaScript是一种垃圾收集的语言,您无需告诉它何时从内存中删除某些东西,而是在看到不再有任何东西指向该东西时这么做。
还请注意,没有理由使用方括号表示法和字符串,您可以如上所述使用文字表示法。