我有一个这样定义的Command
类
class Command {
constructor(name, permission, callback)
{
this.name = name;
this.permission = permission;
this.callback = callback;
}
}
module.exports.command = Command;
有没有一种方法可以预定义callback
的结构,因此每次都需要完全相同的参数,因此只能用一种方法定义它?
例如,如果我希望回调函数始终具有参数client
和args
,则构造函数将只接受带有参数client
和args
的回调
答案 0 :(得分:0)
可以断言函数arity:
if (callback.length !== 2)
throw new Error('Callback should have 2 parameters');
在某些情况下,依靠函数联合是可以接受的。但这是潜在的反模式,可能以不同的方式有害,尤其是从ES6开始。
默认值或rest运算符可以使函数显示为无参数,而事实并非如此:
(function (foo = 1) {}).length === 0;
(function (...args) {}).length === 0;