Is it possible to use NodeJS' events.EventEmitter
with a TypeScript class? If yes, how?
I've tried countless variations in the last hours to get this working, so I won't list any of them.
What I basically want to do:
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');
});
}
}
New approach:
///<reference path="./typings/node/node.d.ts" />
import {EventEmitter} from 'events';
class Database extends EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
You should download node typings:
$ tsd install node --save
and then just use the following code:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database{
constructor() {
events.EventEmitter.call(this);
}
}
I simplified it to test your main problem.
Edit: Modified based on your comment:
///<reference path="./typings/node/node.d.ts" />
import events = require('events');
class Database extends events.EventEmitter {
constructor() {
super();
this.emit('ready');
}
}
new Database();
The modern way to download types definitions for NodeJS and EventEmitter particularly is yarn add @types/node
or npm install @types/node
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With