NodeJS EventEmitter с классом TypeScript
Можно ли использовать 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');
});
}
}
Ответы
Ответ 1
Вы должны скачать node typings:
$ 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
Новый подход:
///<reference path="./typings/node/node.d.ts" />
import {EventEmitter} from 'events';
class Database extends EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();