是否可以将NodeJS'events.EventEmitter
与TypeScript类一起使用?如果是,怎么样?
我在过去的几个小时内尝试了无数的变化来使这个工作,所以我不会列出任何一个。
我基本上想做什么:
export class Database{
constructor(cfg:IDatabaseConfiguration) {
// events.EventEmitter.call(this);
mongoose.connect(cfg.getConnectionString(), cfg.getCredentials(), function (err:any) {
if (err)
this.emit('error', err);
else
this.emit('ready');
});
}
}
答案 0 :(得分:21)
新方法:
///<reference path="./typings/node/node.d.ts" />
import {EventEmitter} from 'events';
class Database extends EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
答案 1 :(得分:19)
您应该下载节点类型:
$ tsd install node --save
然后只使用以下代码:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database{
constructor() {
events.EventEmitter.call(this);
}
}
我简化了它来测试你的主要问题。
修改:根据您的评论进行修改:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database extends events.EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
答案 2 :(得分:1)
下载NodeJS和EventEmitter的类型定义的现代方法尤其是yarn add @types/node
或npm install @types/node