socket.on('Username', async (data: any) => {
clients[data] = socket.id
socket.usernam = data; //error
const user = await Users.findByIdAndUpdate(data, {
$set: { isOnline: true },
})
})
类型"Socket<"上不存在属性"usernam";默认事件映射、默认事件映射和默认事件映射>'
我想这是关于socket.io的。如果是这样,则默认情况下socket
变量没有定义属性usernam
。因为我们在这里使用的是TypeScript,所以socket
是类型化的,所以您不能像在JavaScript中那样在该对象上定义和使用任意属性。如果可以的话,定义";事物的类型";将丢失。
但是由于TypeScript是JavaScript的超集,所以您可以将任何对象视为任意JavaScript对象。所以你可以"untype";对象CCD_ 4;经典的";JavaScript变量。因此:
(socket as any).usernam = data; // NO ERROR
但我建议不要使用这种方法。您已经有了clients
映射(错误线前一行(,所以也许这就足够了?