gpt4 book ai didi

javascript - 在多个函数中抛出相同 TypeError 的 DRY 方法

转载 作者:行者123 更新时间:2023-12-03 00:57:28 27 4
gpt4 key购买 nike

我有一些函数,每个函数都使用一个对象作为参数。

所有这些对象都具有相似的结构,因此我没有在每个函数中进行相同的检查,而是创建了一些检查函数:

const checkIfOptionsIsObject = options => {
if (typeof options === 'object') {
return true;
} else {
throw new TypeError('The function argument should be an object.');
}
}

const checkOptionsMinMax = options => {
if (isNaN(options.min) || isNaN(options.max)) {
throw new TypeError("'min' and 'max' should both be numbers.");
} else if (options.min > options.max) {
throw new Error("'min' shouldn't be greater than 'max'");
} else {
return true;
}
}

这是我如何使用它们:

const firstFunction = options => {
checkIfOptionsIsObject(options);
checkOptionsMinMax(options);

// do some stuff
return result;
}

const secondFunction = options => {
checkIfOptionsIsObject(options);
checkOptionsMinMax(options);

// do some other stuff
return result;
}

const thirdFunction = options => {
checkIfOptionsIsObject(options);

// do some stuff that doesn't use min and max
return result;
}

这段代码有问题吗?

最佳答案

1)请注意,在第一次检查时typeof object === 'object',如果名为 object 的变量实际上是一个数组,它也会为您提供“object”的类型。您可以通过输入 typeof [ ] === 'object' 在控制台中看到这一点,并注意它将返回 true。最好使用 o !== null && typeof o === 'object' && Array.isArray(o) === false; 进行对象测试。

const checkIfOptionsIsObject = options => {
if (options !== null && typeof options === 'object' && Array.isArray(options) === false) {
return true;
} else {
throw new TypeError('The function argument should be an object.');
}
}

关于javascript - 在多个函数中抛出相同 TypeError 的 DRY 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52763662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com