typescript 无法使用新属性扩展类型

amrnrhlw  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(194)

我正在尝试将一个属性添加到现有类型。以下是我的类型:

const dialogData: DialogData = {
    a: string,
    b: string,
    c: string
}

我这样扩展它:

export type ExtendedDialogData = DialogData & {
    d: number
}

但是当我试图创建对象时,它失败了。我的语法一定是完全错误的:

const myData: DialogData[{a:0, b:1, c:2}, {a:3, b:4, c:5}]
const myExtendedData: ExtendedDialogData[] = [...myData, d: 100 ];

错误在 d 上,说 * 找不到名称'd'*。而且,实际上,我只是想让 dc 的副本。有人能帮我理解一下我的语法错误吗?
更新:按照要求,这里是真实的的代码。在一个材料对话框中,我有这两种类型:

export type EditableDataModel = MyDataModel & {
    sharesToMove: MyDataModel[];
}

export interface MyOrdersDialogData {
    title: string,
    orders: EditableDataModel[]
}

在启动模型的组件中,我有以下代码:

public launchModal() {
    const orders: EditableDataModel[] = [...this.selectedOrders.map(el => {...el, sharesToMove: el.shares})[;
}

我可以在Map中使用console.log,并查看订单输出,如下所示:

{
    title: 'my title', 
    orders: 1556
}
imzjd6km

imzjd6km1#

这里,您尝试将d直接添加到数组中,而不是添加到数组中的每个对象。

const myData: DialogData[{a:0, b:1, c:2}, {a:3, b:4, c:5}]
const myExtendedData: ExtendedDialogData[] = [...myData.map(el => {...el, d: 100}) ];

这会将d属性添加到数组中的每一项

相关问题