作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究 Node.js 项目,只是注意到 Visual Studio Code 提供了有关基本 EventEmitter 对象的信息。所以我想也应该可以为自定义的 JSDoc 提供。
我已经尝试遵循 JSDoc http://usejsdoc.org/tags-event.html文档,但似乎没有找到。
我不知道这是否会影响它,但我正在使用 ES6 类,其中事件在它外部的函数中得到处理,但它在同一个脚本中。
这是测试代码。
// voice
if (voice) {
try {
/**
* Voice event.
*
* @event TelegramBot#voice
* @type {object}
* @property {object} chat - [object Chat]
* @property {number} date - Date when content was sent.
* @property {object} from - [object User]
* @property {number} message_id - Message id.
* @property {string} caption - Caption added to message. Value is undefined if none is added.
* @property {object} voice - [object Voice]
*/
context.emit('voice', chat, date, from, message_id, caption, voice)
} catch (error) {
context.emit('error', error)
}
}
最佳答案
我在尝试做同样的事情时发现了这个问题,所以我继续搜索并通过覆盖 addListener
找到了一个可能的解决方案。方法,并记录它们。
我成功地使它适用于 NodeJS 和浏览器 JS。
结果在 VSCode
类型定义
首先,使用您的事件名称创建 typedef:
/**
* @typedef {["someEvent" | "someOtherEvent", ...any[]]} eventsDef
*/
on
和
addListener
方法,记录参数,然后简单地调用父级自己的方法:
class Test extends EventEmitter {
/**
* @param {eventsDef} args
*/
addListener(...args) {
super.addListener(...args);
}
/**
* @param {eventsDef} args
*/
on(...args) {
super.on(...args);
}
fireEvent() {
this.emit("someEvent", "someValue");
}
}
const t = new Test();
t.on("someEvent", (val) => console.log(val));
t.fireEvent(); // Outputs "someValue"
EventTarget
并覆盖
addEventListener
方法。
class Test extends EventTarget {
/**
* @param {["someEvent" | "someOtherEvent", ...any[]]} args
*/
addEventListener(...args) {
super.addEventListener(...args);
}
fireEvent() {
this.dispatchEvent(new CustomEvent("someEvent", {detail: "someValue"}))
}
}
const t = new Test();
t.addEventListener("someEvent", val => console.log(val.detail));
document.querySelector("button").addEventListener("click", () => {
t.fireEvent();
})
<button>Fire event</button>
关于node.js - 如何在 Visual Studio Code 中的事件上使用 JSDoc 自定义 EventEmitter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47045000/
我是一名优秀的程序员,十分优秀!