Ale*_*lls 1 javascript node.js
有没有办法使用 Object.assign 以便在顶级属性发生冲突时抛出错误?或者我们必须手动编写我们的功能才能这样做?
有没有办法使用 Object.assign 以便在顶级属性发生冲突时抛出错误?
不。您所要求的不是Object.assign().
或者我们必须手动编写我们的功能才能这样做?
是的,你必须自己写或者找别人已经写的东西。这是一个不同的函数,如果任何顶级源属性与目标上已有的属性匹配,则该函数将抛出。由于这不是 的行为Object.assign(),因此这是一个具有不同名称的新函数似乎很合适:
function mergeObjects(target, ...sources) {
let originalProperties = new Set(Object.keys(target));
// preflight for any top-level property name conflicts so we can throw before copying anything
for (let src of sources) {
for (let prop of Object.keys(src)) {
if (originalProperties.has(prop)) {
throw new Error(`target already has property ${prop}`);
}
}
}
return Object.assign(target, ...sources);
}
Run Code Online (Sandbox Code Playgroud)