根据其他接口的属性创建接口

时间:2019-06-24 19:52:07

标签: javascript typescript interface

我有两个接口,WorkflowWorkflowVersion

workflow.model.ts

import { WorkflowVersion } from './workflow-version.model';

export interface Workflow{
    name: string;
    ID: number;
    workflowVersions: WorkflowVersion[];
}

workflow-version.model.ts

export interface WorkflowVersion{
    versionID: number;
    lastPublished: string;
    environmentID: number;
}

我想创建一个“拉平”两者的界面。这个新接口WorkflowFlat应该包含两个接口的所有非对象类型属性。目前我有这个:

workflow-flat.model.ts

export interface WorkflowFlat {
    name: string;
    ID: number;
    versionID: number;
    lastPublished: string;
    environmentID: number;
}

上面的模型可以达到目的,但是感觉很重复。如果我想在以后的description中添加一个WorkflowVersion属性,则必须记住还要将其添加到WorkflowFlat中。有什么方法可以使模型自动从两个接口中获取所有属性,然后使用非对象接口创建一个新接口?

1 个答案:

答案 0 :(得分:3)

亚伦·比尔(Aaron Beall)的答案很接近(很抱歉,我无法发表评论),但是它不能正确删除所有扩展object的键,因此最终类型{{1 }}。

以下代码段通过重用tycho01/typical repo中的类型级帮助程序来实现目标:

key: never