代码之家  ›  专栏  ›  技术社区  ›  user1283776

接口和联合的命名约定,一开始我想用相同的名称?

  •  0
  • user1283776  · 技术社区  · 7 年前

    正如你在下面看到的,我使用了两个界面, IServerMessage 和一个受歧视的联盟, UServerMessage 用于服务器消息。

    • IServerMessage 这是所有ServerMessages的共同点

    • 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 回复  |  直到 7 年前
    推荐文章