我正在为相当大的服务构建一个包装器库,以便我正在使用的团队可以更轻松地开发使用此服务。
基本上,其中一个API调用称为“subscribe”,以便程序订阅一个或多个项目(以便跟踪其更改)。 API调用需要1个参数。文档显示了这一点:
我确实弄清楚如何使用可选参数,但我无法弄清楚在javascript中制作“x或y”类型的方法。
答案 0 :(得分:1)
您可以检查参数并将单个值转换为数组并使用该数组。
def f(x):
"""Return the argument
:type x: bool
:param x: the value to return.
:rtype: bool
:returns: the argument.
Examples :
>>>f(True)
True
"""
return x

function fn(parameter) {
return (Array.isArray(parameter) ? parameter : [parameter]).map(a => 'item' + a);
}
console.log(fn(1));
console.log(fn('abc'));
console.log(fn([3, 4]));

答案 1 :(得分:0)
与Java相同,您可以编写一个方法的几个原型,每个原型采用不同数量的参数。调用时,将自行调用正确的方法。
例如:
/* You must check if i is a String */
function method(i){
}
/* You must check if i is a String and j is an Array */
function method(i, j){
}
现在,关于输入的类型,JavaScript不会检查方法原型中的类型,例如Java或C.因此,您需要在方法中控制输入的类型。
答案 2 :(得分:0)
更简单的方法可能是使用“rest参数”使其成为可变函数。您可以定义两个参数,第一个必需参数,其余参数允许零或更多。
function subscribe(item, ...items) {
// item is required
// items may be zero or more additional items
}
您实际上并不需要两个参数,除非文档更清楚地显示所需的参数。
然后他们可以用单个参数调用它,或者如果他们已经有一个数组,他们可以使用扩展语法来使用它。
function subscribe(item, ...items) {
console.log("Found: %s, Then: %s", item, items);
}
subscribe("one", "two", "three");
var my_items = ["one", "two", "three"];
subscribe(...my_items);
答案 3 :(得分:0)
只需检查输入参数以获取Array实例的字符串类型,如下所示:
function method(prm) {
if (prm instanceof Array) {
console.info("(array, optional) A JSON array of Name or ID identifiers");
return;
}
if(typeof(prm) === "string") {
console.info("Name identifier|ID identifier");
return;
}
console.info("Unknown argument");
};
method("id");
method("name");
method(["id", "name"]);
method(1);