Home > Blockchain >  Spread array into new array of another type
Spread array into new array of another type

Time:06-18

I've an array of Files (from an input file type) and want to concat them in another array with a different type, but with a File property.

The File array

const files:File[];

The final array type:

export type AttachmentModel = {
    ID?: number;
    Title?: string;
    ServerRelativeUrl?: string;
    File?: File;
}

const attachments:AttachmentModel[];

I've tried to use the spread syntax to merge them, but of course the types are different, so this doesn't work:

const merged = [...attachments, ...files]

If it was only a single object I would have done like this:

var testFile: File;
var testeAttachment: AttachmentModel = { ...{ ...testFile, File: testFile } };

How can I use "destructuring" in the files array so it returns an array of type AttachmentModel?

CodePudding user response:

It looks like you want to end up with a array of AttachmentModel. If so, you'll want to map your File object to AttachmentModel objects:

const merged: AttachmentModel[] = [
    ...attachments,
    ...files.map((file) => ({File: file}))
];

Playground link

  • Related