TypeScript 中的可变参数方法至少有一个参数

Expect at least one argument for variadic method in TypeScript

我有这样的方法:

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

我使用的方法是这样的:

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

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

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

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

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

您可以使用带有可变参数的 tuple-like 数组:

getValues(...args: [string, ...string])