如何将socket.io的require语法转换为TypeScript的import写法
修改后符合TypeScript规范的代码
直接将CommonJS的require调用改为ES模块导入+实例化写法即可,原有配置项无需调整:
import { Server } from 'socket.io'; const io = new Server(server, { cors: { origin: '*', } });
补充说明
原来的require('socket.io')直接返回Socket.IO的服务器构造函数,切换为ES模块规范后,需要先显式导入Server构造类,再通过new关键字完成实例化,运行逻辑和原有写法完全一致。
如果需要为收发的事件增加类型校验,还可以给Server传入自定义泛型参数,实现类型提示和约束:
// 客户端发送给服务端的事件类型定义 interface ClientToServerEvents { sendMsg: (content: string) => void; } // 服务端发送给客户端的事件类型定义 interface ServerToClientEvents { pushMsg: (from: string, content: string) => void; } // 传入泛型参数后,触发和监听事件时都会自动校验类型 const io = new Server<ClientToServerEvents, ServerToClientEvents>(server, { cors: { origin: '*', } });
内容的提问来源于stack exchange,提问作者user16657995
相关产品推荐
相关产品推荐

