扩展接口并应用超级接口的对象

时间:2019-08-31 12:57:44

标签: typescript

让我们假设我有以下内容

export interface Project {
    id: number;
    name: string;
    description: string;
    metaModel: { name: string, id: number };
    createdAt: string;
    lastEdited: string;
    visibilityLevel: VisibilityLevel;
    members: string[];
    m0files: M0File[];
}

我这样扩展它

interface ProjectAndMembership extends Project{
    owner: boolean;
}

如何将Project的对象/变量应用于新接口ProjectMembership,这样我只需要为所有者值提供一个布尔值?

1 个答案:

答案 0 :(得分:1)

  

如何将Project的对象/变量应用于新接口ProjectMembership,这样我只需要为所有者值提供一个布尔值?

您至少有两个选择:

  1. 也许通过Object.assign创建一个新对象:

    let x:ProjectAndMembership = Object.assign({}, {owner: true}, theProject);
    

    Playground Link

  2. 使用类型断言,只需将属性添加到现有对象中即可:

    let x:ProjectAndMembership = theProject as ProjectAndMembership;
    x.owner = true;
    

    Playground Link

我倾向于#1。