Я сделал две функции, которые я экспортирую в другие файлы, одна из которых использует другую. После того, как я добавил некоторый входной проверочный код в обе функции, я понял, что этот код совершенно одинаков. Есть ли способ избежать дублирования фрагментов кода?
Конечно, я изменяю функцию setPropertyOnElement
, чтобы экспортировать две функции - одну, которая выполняет проверку, а другую - то, что функция действительно должна делать, но я надеюсь, что есть лучший способ.
export function setPropertyOnElements(propertyValuePairs, elements) {
if (typeof propertyValuePairs !== "object") {
throw new Error("Invalid property value pairs")
}
if (!elements instanceof Array) {
throw new Error("Invalid elements")
}
elements.forEach((a,i)=>{
if (typeof a !== "object") {
throw new Error(`Invalid element at index ${i}`)
}
});
return Object.keys(propertyValuePairs)
.forEach(property=>elements
.forEach(element=> {
setPropertyOnElement(property, propertyValuePairs[property], element);
})
);
}
export function setPropertyOnElement(property, value, element) {
if (typeof property !== "string") {
throw new Error("Invalid property")
}
if (typeof value !== "string") {
throw new Error("Invalid property")
}
if (typeof element !== "object") {
//best name?
throw new Error(`Invalid element`)
}
element[property] = value;
}