无法将回调函数从 SocketIO 传递给打字稿

时间:2021-05-22 14:06:33

标签: javascript node.js typescript sockets socket.io

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

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

Code Screenshot

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

错误

<块引用>

参数 'callback' 隐式具有 'any' 类型。

1 个答案:

答案 0 :(得分:1)

尝试更改以下行:

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