如何修复属性"usernam"在类型"套接字<默认事件映射,默认事件映射,默认事件映射>"上不存在


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映射(错误线前一行(,所以也许这就足够了?

最新更新