Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js中使用EventEmitter和Typescript的类型安全侦听器_Javascript_Node.js_Typescript_Eventemitter - Fatal编程技术网

Javascript 在Node.js中使用EventEmitter和Typescript的类型安全侦听器

Javascript 在Node.js中使用EventEmitter和Typescript的类型安全侦听器,javascript,node.js,typescript,eventemitter,Javascript,Node.js,Typescript,Eventemitter,给定一个接口和一个扩展类,是否可以定义为函数参数提供类型安全检查的自定义侦听器 给出以下示例: 从“事件”导入{EventEmitter}; 接口有效载荷{ id:字符串; 重量:个数; } 类CustomEventEmitter扩展了EventEmitter{ 构造函数(){ 超级(); this.on('my_event',(data)=>{ //我希望数据被隐式推断为有效负载类型 console.log(data.weight);//应该编译 console.log(data.someth

给定一个接口和一个扩展类,是否可以定义为函数参数提供类型安全检查的自定义侦听器

给出以下示例:

从“事件”导入{EventEmitter};
接口有效载荷{
id:字符串;
重量:个数;
}
类CustomEventEmitter扩展了EventEmitter{
构造函数(){
超级();
this.on('my_event',(data)=>{
//我希望数据被隐式推断为有效负载类型
console.log(data.weight);//应该编译
console.log(data.something);//这不应该编译
});
}
}

节点EventEmitter侦听器定义为
(…args:any[])=>void)
,我希望覆盖
any[]
类型,并使用自定义定义的类型。有可能吗?

是的,有一个很棒的软件包,名为,对我来说非常有效

从他们的文档中:

import{EventEmitter}from“events”//I在这里做了一点小小的更改,因为我需要从events显式导入EventEmitter
从“类型化发射器”导入TypeDemiter
//定义发射器的类型,如下所示:
//关键词:事件名称;值:侦听器函数签名
接口消息事件{
错误:(错误:错误)=>无效,
消息:(body:string,from:string)=>void
}
const messageEmitter=new EventEmitter()作为TypedEmitter

//很好是的,有一个很棒的软件包,名为,对我来说非常有效

从他们的文档中:

import{EventEmitter}from“events”//I在这里做了一点小小的更改,因为我需要从events显式导入EventEmitter
从“类型化发射器”导入TypeDemiter
//定义发射器的类型,如下所示:
//关键词:事件名称;值:侦听器函数签名
接口消息事件{
错误:(错误:错误)=>无效,
消息:(body:string,from:string)=>void
}
const messageEmitter=new EventEmitter()作为TypedEmitter

//很好,请看一看basarat的打字手册,他在手册中读了一篇文章。我很惊讶(或回答中提到的库)没有出现在你的搜索中……看看basarat的打字手册,他在那里查阅了一本。我很惊讶(或回答中提到的库)没有出现在您的搜索中…太棒了,我错过了这个库。谢谢太棒了,我错过了这个图书馆。谢谢