如何通过JSDoc注释声明回调函数的参数类型?
正确为JavaScript回调函数添加JSDoc类型标注
你之前用void<Event>的写法不符合JSDoc的类型规范,所以导致回调类型被识别为any。下面是两种正确的标注方式:
方式一:直接在@param中定义回调类型
直接在@param里用function(参数类型): 返回值类型的格式标注回调函数:
/** * Adds an event listener to track scroll events * @param {function(Event): void} callback - 接收一个Event对象作为参数,无返回值的回调函数 */ static addScrollListener(callback) { Input.scrollListeners.push(callback); }
这里function(Event): void明确了:回调函数接收一个Event类型的参数,执行后没有返回值,编辑器会正确识别这个类型,不会再显示为any。
方式二:用@typedef定义可复用的回调类型
如果这个回调类型会在多个地方用到,可以先通过@typedef定义一个专属类型,再在参数中引用:
/** * @typedef {function(Event): void} ScrollCallback * @description 滚动事件回调函数,接收一个Event对象参数,无返回值 */ /** * Adds an event listener to track scroll events * @param {ScrollCallback} callback - 滚动事件触发时执行的回调函数 */ static addScrollListener(callback) { Input.scrollListeners.push(callback); }
这种方式能让代码结构更清晰,也方便统一维护回调类型的定义。
内容的提问来源于stack exchange,提问作者itsoutchy
相关产品推荐
相关产品推荐

