JavaScript проверяет аргументы дважды при использовании другой функции - PullRequest
0 голосов
/ 13 апреля 2020

Я сделал две функции, которые я экспортирую в другие файлы, одна из которых использует другую. После того, как я добавил некоторый входной проверочный код в обе функции, я понял, что этот код совершенно одинаков. Есть ли способ избежать дублирования фрагментов кода?

Конечно, я изменяю функцию 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...