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