ค้นหาเว็บไซต์

javascript - NodeJS EventEmitter กับคลาส TypeScript


สามารถใช้ events.EventEmitter ของ NodeJS กับคลาส 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');
        });
    }
}

คำตอบ #1

แนวทางใหม่:

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

import {EventEmitter} from 'events';

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

new Database();

คำตอบ #2

คุณควรดาวน์โหลดไทพ์ปิ้งส์ของ Node:

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

บทความที่เกี่ยวข้อง