打字稿:有一种简单的方法可以将一种类型的对象转换为另一种

Shi*_*ara 20 arrays type-conversion typescript typescript2.0

所以,我有两节课

Item { name: string; desc: string; meta: string}

ViewItem { name: string; desc: string; hidden: boolean; }
Run Code Online (Sandbox Code Playgroud)

我有一个Item数组需要转换为ViewItem数组.目前,我使用for循环遍历数组,实例化ViewItem,为属性赋值并将其推送到第二个数组.

有没有一种简单的方法来实现这个使用lambda表达式?(类似于C#)或者还有其他方法吗?

Nit*_*mer 29

你没有展示足够的代码,所以我不确定你如何实例化你的类,但无论如何你可以使用数组映射函数:

class Item {
    name: string;
    desc: string;
    meta: string
}

class ViewItem {
    name: string;
    desc: string;
    hidden: boolean;

    constructor(item: Item) {
        this.name = item.name;
        this.desc = item.desc;
        this.hidden = false;
    }
}

let arr1: Item[];
let arr2 = arr1.map(item => new ViewItem(item));
Run Code Online (Sandbox Code Playgroud)

(游乐场代码)


编辑

这可以更短Object.assign:

constructor(item: Item) {
    Object.assign(this, item);
}
Run Code Online (Sandbox Code Playgroud)


amm*_*han 11

你可以使用这样的东西。

const newdata = olddata.map((x) => {
        return { id: Number(x.id), label: x.label };
      });
Run Code Online (Sandbox Code Playgroud)

因为转换后的列将映射到 newdata 数组。