正如你在下面看到的,我使用了两个界面,
IServerMessage
和一个受歧视的联盟,
UServerMessage
用于服务器消息。
如果你愿意的话,你可以阅读更多关于我是如何在这篇文章中实现这两个目标的:
Can TypeScript infer correct types in a switch block when using extends the same way I can when using unions?
然而,我知道
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;