TypeScript编写Discord克隆消息平台WebSocket API报错求助
问题原因与修复方案
错误根源
报错Namespace 'API.WSResponse' has no exported member 'UserDelete'的核心原因:
你在FromWSAPI接口的USER_DELETE字段中声明要使用WSResponse.UserDelete类型,但**API.WSResponse命名空间里完全没定义这个接口**——你只在客户端发给服务器的WSPayload里写了UserDelete,但服务器返回给客户端的响应结构里漏掉了对应定义。
修复方法
根据你的业务需求二选一:
- 如果用户删除操作的服务器响应不需要携带任何数据,直接在
WSResponse命名空间中添加空接口:
export namespace WSResponse { // ... 其他已有的接口 ... export interface UserDelete {} export interface UserUpdate { payload: Partial<Entity.User>; } }
- 如果响应需要返回被删除用户的标识(比如用户ID),可以定义带字段的接口:
export namespace WSResponse { // ... 其他已有的接口 ... export interface UserDelete { userId: string; } export interface UserUpdate { payload: Partial<Entity.User>; } }
修复后的完整WSResponse示例
// full data, not payload // - data that will be likely stored and used by redux on client side export namespace WSResponse { export interface ChannelCreate { channel: Entity.Channel; creatorId: string; } export interface ChannelDelete { channelId: string; guildId: string; } export interface GuildCreate { guild: Entity.Guild; } export interface GuildDelete { guildId: string; } export interface GuildUpdate { guildId: string; payload: Partial<Entity.Guild>; } export interface GuildMemberAdd { guildId: string; member: Entity.User; } export interface InviteCreate { invite: Entity.Invite; } export interface GuildMemberRemove { userId: string; } export interface MessageCreate { message: Entity.Message; } export interface MessageDelete { messageId: string; } export interface MessageUpdate { messageId: string; payload: Partial<Entity.Message>; } export interface Ready { user: Entity.User; } export interface TypingStart { channelId: string; userId: string; } // 新增的UserDelete接口 export interface UserDelete { userId: string; // 可根据需求调整或留空 } export interface UserUpdate { payload: Partial<Entity.User>; } }
内容的提问来源于stack exchange,提问作者jhdthelad
相关产品推荐
相关产品推荐

