Socket.io Typescript中未定义全局变量

Socket.io Typescript中未定义全局变量,socket.io,typescript,Socket.io,Typescript,我正在尝试使用typescript创建从服务器到客户端的socket.io连接,为此我需要在构造函数中定义“socket”对象,以便该对象可以使用socket向客户端发送数据。但是,当编译为javascript时,套接字对象不会被定义为该类的变量,这会阻止调用它 这是打字稿 导出类上载{ directory = "./data"; socket: Socket; constructor(socket:Socket) { this.socket = socket; } public u

我正在尝试使用typescript创建从服务器到客户端的socket.io连接,为此我需要在构造函数中定义“socket”对象,以便该对象可以使用socket向客户端发送数据。但是,当编译为javascript时,套接字对象不会被定义为该类的变量,这会阻止调用它

这是打字稿

导出类上载{

directory = "./data";
socket: Socket;

constructor(socket:Socket) {
    this.socket = socket;
}

public upload(req:express.Request, res) {
                this.socket.emit('fileReceivedConfirmation', {
                    successful:true,
                    filePath: filePath,
                    originalName: originalFileName
                });
    }
下面是相应的javascript

function Upload(socket) {
    this.directory = "./data";
    this.socket = socket;
}

Upload.prototype.upload = function (req, res) {
      this.socket.emit('fileReceivedConfirmation', {
                successful: true,
                filePath: filePath,
                originalName: originalFileName
            });
}
socket变量没有在编译的Javascript中的任何地方定义,这会在函数调用socket时产生此错误

C:\Users\Me\WebstormProjects\Core\lib\Upload.js:43
            this.socket.emit('fileReceivedConfirmation', {
                        ^
TypeError: Cannot call method 'emit' of undefined

尝试更改以下代码

io.sockets.on('connection', function (socket) {
    this.socket = socket;
});
对此

io.sockets.on('connection', (socket:any):void => {
        this.socket = socket;
    });

我将变量转换为静态变量,它起作用了:

directory = "./data";
static socket:Socket;

constructor(socket:Socket) {
    console.log("Creating socket");
    Upload.socket = socket;
}

抱歉,问题已更改。请检查问题。谢谢。错误表明您没有为
socket
参数指定任何值。如何初始化上载构造函数?