带TypeScript类的NodeJS EventEmitter

ecfsfe2w  于 2023-06-07  发布在  TypeScript
关注(0)|答案(3)|浏览(158)

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

6rqinv9w1#

新方法:

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

import {EventEmitter} from 'events';

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

new Database();
0qx6xfy6

0qx6xfy62#

您应该下载节点类型:

$ 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();
ohtdti5x

ohtdti5x3#

下载NodeJS和EventEmitter的类型定义的现代方法特别是:

npm install @types/node

或者用Yarn:

yarn add @types/node

相关问题