首页 > 解决方案 > 无法将回调函数从 SocketIO 传递到打字稿

问题描述

我的服务器是使用 SocketIO 用 nodeJS + Typescript 编写的,这是一个在线聊天应用程序,但我无法使用 TypeScript 传输库中提供的回调

如何正确调用回调?下面的代码会抛出错误

代码截图

const { addMember, getMember, deleteMember, getMembers } = require('./members')

const app = require('express')()
const http = require('http').createServer(app)
const io = require('socket.io')(http)
const cors = require('cors')
const PORT = process.env.PORT || 5000

interface Date {
    name: string,
    room: string
}

declare type MyHandler = (myArgument: string) => void;

app.use(cors())
io.on('connection', (socket: any) => {
    console.log("User connected");
    socket.on('login', ({ name, room }: Date, callback) => {
        console.log("User");
        const { user, error } = addMember(socket.id, name, room)
        if (error) return callback(error)
        socket.join(user.room)
        socket.in(room).emit('notification', { title: 'Кто то вошел', description: `${user.name} присоеденился к нам` })
        io.in(room).emit('users', getMembers(room))
        callback()
    })
})

错误

参数“回调”隐式具有“任何”类型。

标签: javascriptnode.jstypescriptsocketssocket.io

解决方案


尝试更改以下行:

socket.on('login', ({ name, room }: Date, callback: Function) => {

推荐阅读