Svg.js 添加事件监听器 —— on 方法:报错:应有 2-4 个参数,但获得 1 个(中文文档与英文文档示例有出入)

报错:应有 2-4 个参数,但获得 1 个。ts-plugin(2554) svg.js.d.ts(697, 7): 未提供 "cb" 的自变量
在“添加多个事件监听器”中,中文文档给的示例是错的
中文文档示例:
// 添加单个事件监听器
element.on('click', (event) => {
  console.log('点击事件')
})

// 添加多个事件监听器
element.on({
  click(event) {
    console.log('点击事件')
  },
  mouseover(event) {
    console.log('鼠标移入')
  },
})

但看源码:

  // EventTarget.js
  class EventTarget {
    events: Eventobject

    addEventListener(): void
    dispatch(event: Event | string, data?: object): Event
    dispatchEvent(event: Event): boolean
    fire(event: Event | string, data?: object): this
    getEventHolder(): this | Node
    getEventTarget(): this | Node

    on(
      events: string | Event[],
      cb: EventListener,
      binbind?: any,
      options?: AddEventListenerOptions
    ): this
    off(
      events?: string | Event[],
      cb?: EventListener | number,
      options?: AddEventListenerOptions
    ): this

    removeEventListener(): void
  }
从源码上看,第一个参数events类型要么是字符串string要么是事件数组Event[ ],并不支持对象形式的多事件绑定,然后事件的处理逻辑放在cb第二个参数中
英文文档给出的示例才是对的:
// Passing multiple event types can be done with either an array:
element.on(['click', 'mouseover'], handler)
posted @ 2025-08-28 20:01  游戏三昧的木笔  阅读(8)  评论(0)    收藏  举报