Home > Mobile >  Extending Type with new property isn't working
Extending Type with new property isn't working

Time:11-18

I'm trying to add one property to an existing Type. Here's my type:

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

I extend it like this:

export type ExtendedDialogData = DialogData & {
    d: number
} 

But when I try to create the object it's failing. My syntax must be completely wrong:

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

The error is on d and says cannot find name 'd'. Also, in actuality, I just want d to be a copy of whatever c is. Can someone please help me understand my syntax error?

UPDATE: As requested, here's the real code. In a Material dialog in Angular I have these two types:

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

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

In the component that launches the model, I have this:

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

I can console.log inside the map and see the orders output like this:

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

CodePudding user response:

Here, you are trying to add d directly to the array instead of adding to each object inside the array. You can try like the following

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

This will add the d property to each item in the array

  • Related