首页 > 解决方案 > TypeScript 中的可变参数方法至少需要一个参数

问题描述

我有这样的方法:

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

我使用这样的方法:

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

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

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

标签: typescripttsc

解决方案


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

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

推荐阅读