Search code examples
javascriptnode.jstypescripttypescript1.6

NodeJS EventEmitter with TypeScript class


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');
        });
    }
}

Solution

  • 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();