javascript - NodeJS EventEmitter med TypeScript-klass


Är det möjligt att använda NodeJS events.EventEmitter med en TypeScript-klass? Om ja, hur?

Jag har försökt otaliga varianter de senaste timmarna för att få detta att fungera, så jag kommer inte att lista någon av dem.

Vad jag i princip vill göra:

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

Svar #1

Ny metod:

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

import {EventEmitter} from 'events';

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

new Database();

Svar #2

Du bör ladda ner node-typningar:

tsd install node --save

och använd sedan bara följande kod:

///<reference path="./typings/node/node.d.ts" />
import events = require('events');

class Database{
    constructor() {
        events.EventEmitter.call(this);
    }
}

Jag förenklade det för att testa ditt huvudproblem.

Redigera: Ändrad baserat på din kommentar:

///<reference path="./typings/node/node.d.ts" />
import events = require('events');

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

new Database();

Relaterade artiklar