javascript - typescript 和 ...args

标签 javascript reactjs typescript

TypeScript 不显示“预期 1 个参数,但得到 0 个”。错误,应该在什么时候发生。

type PolyElement = [number, number];

export interface Node {
  element: PolyElement | null;
  next: Node | null;
}
export class Node {
  constructor(element?: PolyElement) {
    this.element = element ?? null;
    this.next = null;
  }
  add(...args: PolyElement[]) {
    for (let i = 0; i < args.length; ++i) {
       //some code
      }
    }
  }

然后我像这样调用方法:

poly1.add([1,2,3]);

并且它输出: “[number, number, number]”类型的参数不能分配给“PolyElement”类型的参数。属性“长度”的类型不兼容。类型 '3' 不可分配给类型 '2'.ts(2345)

还有

poly1.add([]);

输出:“[]”类型的参数不可分配给“PolyElement”类型的参数。类型“[]”缺少类型“[number, number]”的以下属性:0, 1ts(2345)

等等

问题是为什么:

poly1.add();

不输出类似的内容:预期至少有 1 个参数,但得到了 0。 ?

最佳答案

这个语法

add(...args: PolyElement[]) {

意思是“给我尽可能多的参数(包括零)”。

您可以改为这样来强制执行至少一个参数:

add(...args: [PolyElement, ...PolyElement[]]) {

关于javascript - typescript 和 ...args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62961968/

相关文章:

android - 键盘正在将选项卡和应用程序内容推向 Android 中的 ionic 3

jquery - 类型 'tab' 上不存在属性 'JQuery'

javascript - 如何创建一个弹出窗口但不丢失以前的窗口

javascript - 发送数据闪烁(1)设备

javascript - 如何使用 Normalizr 为递归模型定义模式

javascript - 如果对象键在 typescript 中是动态的,如何获取值(value)?

javascript - 从 Web 服务返回对象到 Ajax 请求成功回调函数

javascript - 添加文本以淡入和淡出图像

javascript - 我将如何使用 Socket-IO 上传图像文件?

reactjs - React Router 多个参数不起作用