如何为EventEmitter或EventTarget编写通用功能?
我想编写一个通用addListener
与任何eventtarget
一起使用的函数。我想使用事件发射极的类型和事件名称来推断回调函数的参数,类似于addeventListener
的工作方式。
本质上,我希望此代码不使用任何
:
addListener(element, 'click', (event) => {
// event is automatically inferred to be `MouseEvent`
...
});
我的用例是我想将事件目标选项polyfill 一旦和信号
到达上节点eventemitter,其形状与eventtarget相似。我问有关事件标准的问题,因为它具有内置示例,并且我们的EventEmitter类型是自定义的。
I want to write a generic addListener
function that works with any EventTarget
. I'd like to infer the callback function's parameters using the event emitter's types and the event name, similar to how addEventListener
works.
Essentially, I want this code to work without using any
:
addListener(element, 'click', (event) => {
// event is automatically inferred to be `MouseEvent`
...
});
My use case is that I want to polyfill event target options like once
and signal
onto Node EventEmitters, which have a similar shape to EventTarget. I'm asking the question about EventTarget since it has built-in examples and our EventEmitter types are custom.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以看到
addeventListener
的实现,您会做类似的事情:
如果您希望回调签名有所不同,只需执行相同的操作,而是定义整个功能签名。
You can see the implementation for
addEventListener
You'd do something similar:
If you want callback signatures to differ, just do the same thing but define entire function signatures.