首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Socket.io typescript上的其他属性不存在

Socket.io typescript上的其他属性不存在
EN

Stack Overflow用户
提问于 2021-05-04 00:30:56
回答 1查看 1.1K关注 0票数 2

我使用的是带有typescript的Socket.io v4.0.1和一个节点/express服务器,它可以正常工作。问题是,在连接时,我希望向客户端套接字发出它的sessionID和userID,这是我的服务器套接字实例上的附加属性,但typescript抛出了以下类型错误。

代码语言:javascript
运行
复制
io.on("connection", (socket: Socket): void => {
  console.log(socket.id);

  socket.emit("session", {
    sessionID: socket.sessionID, // property sessionID does not exist on type Socket<DefaultEventsMap,DefaultEventsMap>
    userID: socket.userID,// property userID does not exist on type Socket<DefaultEventsMap,DefaultEventsMap>
  });
});

有没有办法在不更改类型定义本身(@types/socket.io)的情况下将这些附加属性添加到类型定义中?

socketio's additional attributes documentation

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 10:30:55

解决方案是创建我自己的接口,该接口从套接字类型扩展并添加所需的附加属性。

代码语言:javascript
运行
复制
interface ISocket extends Socket {
  name?: string;
  // other additional attributes here, example:
  // surname?: string;
}

虽然我已经尝试过了,但它抛出了另一个错误,基本上是说类型SocketISocket不兼容,因为类型Socket上缺少属性"name“,而类型ISocket中需要属性”name“。

这个问题的解决方案是添加"?“在name?: string中。这使得该字段在界面中不是必需的。

感谢@halilcakar帮助我。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67372494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档