【问题标题】:Expect at least one argument for variadic method in TypeScriptTypeScript 中的可变参数方法至少需要一个参数
【发布时间】:2018-07-17 06:22:50
【问题描述】:

我有这样的方法:

  getValues(...args: Array<string>) : Array<any> {
    return args.map(k => {
      return this.shared.get(k);
    });
  }

我使用这样的方法:

const c = b.getValues(); // compiles

在我的情况下不传递参数实际上是不正确的,只有至少传递一个参数才有意义。

有没有办法告诉 TypeScript 至少需要传递一个参数?

【问题讨论】:

  • getValues(mandatoryArg: string, ...optionalArgs: Array&lt;string&gt;) ?

标签: typescript tsc


【解决方案1】:

您可以添加一个具有强制参数的重载来强制调用者指定至少一个值,但只使用一个 rest 参数来保持实现签名(保持您的实现相同)

getValues(mandatory: string, ...args: Array<string>): Array<any>
getValues(...args: Array<string>): Array<any> {
    return args.map(k => {
        return this.shared.get(k);
    });
}

【讨论】:

  • 对于不在类中的普通函数怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2013-02-24
  • 2012-09-26
  • 2017-11-16
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多