如何验证TypeScript中的参数数量

时间:2019-01-09 20:42:56

标签: typescript

当无效数量的参数传递给函数时,我(仅)使用arguments引发错误。

const myFunction = (foo) => {
  if (arguments.length !== 1) {
     throw new Error('myFunction expects 1 argument');
  }
}

不幸的是,在TypeScript中,在箭头函数中引用时出现错误The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression.

如何(始终)验证TypeScript中的参数数量?

2 个答案:

答案 0 :(得分:2)

您发布的代码段对我来说似乎没有相同的错误。如果将其更改为箭头函数,我会看到该错误:

const myFunction = (foo) => {
    if (arguments.length !== 1) {
        throw new Error('myFunction expects 1 argument');
    }
}

您可以尝试执行以下操作:

const myFunction = (...foo) => {
    if (foo.length !== 1) {
        throw new Error('myFunction expects 1 argument');
    }
}

要解决此问题。

答案 1 :(得分:2)

您还可以在编译时强制执行函数的功能:

const myFunction = (...args: [any]) => {
  /* ... */
}
myFunction(1);    // OK
myFunction(1, 2); // Compile-time error