boo*_*oop 13 javascript node.js typescript typescript1.6
是否可以将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');
});
}
}
Run Code Online (Sandbox Code Playgroud)
Dom*_*alo 22
新的方法:
///<reference path="./typings/node/node.d.ts" />
import {EventEmitter} from 'events';
class Database extends EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
Run Code Online (Sandbox Code Playgroud)
Mar*_*cka 19
你应该下载节点类型:
$ tsd install node --save
Run Code Online (Sandbox Code Playgroud)
然后只需使用以下代码:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database{
constructor() {
events.EventEmitter.call(this);
}
}
Run Code Online (Sandbox Code Playgroud)
我简化它来测试你的主要问题.
编辑:根据您的评论修改:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database extends events.EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
Run Code Online (Sandbox Code Playgroud)
下载 NodeJS 和 EventEmitter 类型定义的现代方法是:
npm install @types/node
Run Code Online (Sandbox Code Playgroud)
或用纱线:
yarn add @types/node
Run Code Online (Sandbox Code Playgroud)