具有TypeScript类的NodeJS EventEmitter

时间:2015-11-15 09:22:43

标签: javascript node.js typescript typescript1.6

是否可以将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');
        });
    }
}

3 个答案:

答案 0 :(得分:21)

新方法:

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

import {EventEmitter} from 'events';

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

new Database();

答案 1 :(得分:19)

您应该下载节点类型:

$ 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 :(得分:1)

下载NodeJS和EventEmitter的类型定义的现代方法尤其是yarn add @types/nodenpm install @types/node