javascript - 具有可为空属性的 Typescript 接口(interface)

标签 javascript typescript

我有一个带有可为空字段的接口(interface)IFilterSet:

export interface IFilterSet {
        filter1?: boolean;
        filter2?: boolean;
        filter3?: number;
        fitler4?: string;
    }

我收到另一个对象 X,该对象可能包含 IFilterSet 对象等。

我想映射对象 X 的 IFilterSet 属性。 第一个问题是为这些属性创建一个循环,但因为它们可以为空,所以它不会工作,不会有任何东西可以循环。 初始化一个空的 IFilterSet 会破坏这些属性可为空的目的,对吗?

最佳答案

我不确定我是否完全明白你的问题,但是这样怎么样:

function map(filterSet: IFilterSet, obj: X) {
    (obj as any)['filter1'] = filterSet.filter1;
    (obj as any)['filter2'] = filterSet.filter2;
    (obj as any)['filter3'] = filterSet.filter3;
    (obj as any)['filter4'] = filterSet.filter4;
}

这样,X 实例将获取 filterSet 的所有属性,并因不存在的属性而获取 undefined,但所有字段最终都会在那里。

或者这个(如果您尝试构造一个新的 IFilterSet 实例):

function map(obj: X): IFilterSet {
    return {
        filter1: (obj as any)['filter1'],
        filter2: (obj as any)['filter2'],
        filter3: (obj as any)['filter3'],
        filter4: (obj as any)['filter4']
    }
}

在这里,您将获得一个 IFilterSet 实例,其字段为 undefinedfilter1filter4

无论哪种方式,您都必须对字段名称进行硬编码,我不确定您是否可以以不同的方式获得它。

关于javascript - 具有可为空属性的 Typescript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48377836/

相关文章:

javascript - 失败的 Prop 类型 : Invalid prop `app` supplied to `Body` , 需要一个 ReactElement

javascript - "angular-bootstrap-md\index.ts is not part of the compilation output"

javascript - 如何从解析平台检索对象并使用 Typescript 显示它们?

javascript - 在初始化程序中设置时,JQuery UI 事件回调不会触发

javascript - 使元素滚动更慢(视差)

javascript - 我应该如何表示数据以有效搜索和比较字符串

javascript - Ng-show 交换 DOM 不透明度动画

typescript - 以编程方式应用 Typescript 重构

typescript - 从两个可区分的并集创建矩阵类型

javascript - 逗号插入无限小数中