在类中预定义回调参数

时间:2019-04-07 10:05:31

标签: node.js

我有一个这样定义的Command

class Command {

  constructor(name, permission, callback)
  {
    this.name = name;
    this.permission = permission;
    this.callback = callback;
  }
}

module.exports.command = Command;

有没有一种方法可以预定义callback的结构,因此每次都需要完全相同的参数,因此只能用一种方法定义它?

例如,如果我希望回调函数始终具有参数clientargs,则构造函数将只接受带有参数clientargs的回调

1 个答案:

答案 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;