typescript - 接口和联合的命名约定,首先想到我想给出相同的名称?
问题描述
正如您在下面看到的,我对服务器消息同时使用了接口IServerMessage
和有区别的联合。UServerMessage
IServerMessage
是所有 ServerMessage 的共同点UServerMessage
是一个可区分的联合,用于帮助 TypeScript 在 switch case 情况下推断正确的类型。
如果你愿意,你可以阅读更多关于我是如何在这个线程中拥有这两者的信息:TypeScript 可以在使用扩展时推断出开关块中的正确类型,就像我在使用联合时一样吗?
但是,我知道I
接口的U
前缀和联合的前缀都是非常规的。
在这种情况下我可以应用什么通用命名约定?我搜索了这个主题,但没有找到。
export interface IServerMessage {
type: string;
}
export interface ServerResponse extends IServerMessage {
type: 'response';
cmd: string;
trans_id?: string;
data?: Object;
}
export interface ServerError extends IServerMessage {
type: 'error',
errorcode: string;
cmd?: string;
trans_id?: string;
data?: Object;
}
export interface ServerProgress extends IServerMessage {
type: 'progress',
cmd: string,
progress_value: number,
trans_id?: string,
data?: string;
}
export interface ServerInformation extends IServerMessage {
type: 'information',
info: string;
data?: Object;
}
export type UServerMessage = ServerResponse | ServerError | ServerProgress | ServerInformation;
解决方案
推荐阅读
- r - 通过选择不匹配的数据子集数据集
- express - 为什么收到“/”获取请求后前两个函数不执行?
- jquery - 如何将参数从 jQuery 传递到 laravel 路由
- python - 如何检查一行中的所有列是否都是正数?
- antlr4 - 使用 PDDL 语言的默认 ANTLR4 语法解析错误
- php - 返回值 = 1 时回显
- algorithm - 反向移动到前面变换
- php - 如何使相同的文件包含在位于不同目录中的两个不同文件中以重定向到相同的最终路径?
- node.js - 无法让 websocket 客户端作为子进程运行
- reactjs - React useState Hook setter 没有数组变量的结果