Подтвердить что ты не робот

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

Ответ 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();