接口和联合的命名约定,一开始我想给它起一个相同的名字?

时间:2019-02-14 12:24:40

标签: typescript

如下所示,我同时使用接口IServerMessage和受歧视的联合身份UServerMessage来存储服务器消息。

  • IServerMessage是所有ServerMessage的共同点

  • UServerMessage是一个有区别的联合,可帮助TypeScript在切换情况下推断正确的类型。

如果您愿意,可以阅读更多有关我如何在此线程中同时拥有这两项的信息:​​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;

0 个答案:

没有答案