接口中的TypeScript联合类型行为

时间:2017-11-15 17:45:19

标签: typescript

我的数据可以包含一组标识字段,第二组或两者。我有这样的接口编码。

export interface IRecordIdBase {
    RecordType: enumRecordType;
}

export interface IRecordIdA extends IRecordIdBase {
    AlphaCode: string;
    LocationCode: string;
}

export interface IRecordIdB extends IRecordIdBase {
    BravoCode: string;
    LocationCode?: string;
}

麻烦的是,我知道的唯一方法就是制造一个"这个,那个或两个" item是一个联合类型。

export type IRecordId = IRecordIdA | IRecordIdB | (IRecordIdA & IRecordIdB);

但是,我以后无法扩展类型。我使用不同的数据子集,需要不同的接口,但都具有相同的ID结构。例如,

// can't extend IRecordId
export interface IRecordContent extends IRecordId {
    RecordData: string;
    RecordAuthor: string;
}

export interface IRecordMeta extends IRecordId {
    RecordAdded: string;
    RecordLastUpdated: string;
}

是否有接口模式或其他解决方案?我正在使用TypeScript v2.6.1。

0 个答案:

没有答案