web-dev-qa-db-ja.com

TypeScriptクラスを含むNodeJS EventEmitter

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

ノードタイプをダウンロードする必要があります。

$ 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();
20
Martin Vseticka

新しいアプローチ:

///<reference path="./typings/node/node.d.ts" />

import {EventEmitter} from 'events';

class Database extends EventEmitter {
    constructor() {
        super();
        this.emit('ready');
    }
}

new Database();
24
Dominik Palo