How to define Typescript Map of key value pair. where key is a number and value is an array of objects How to define Typescript Map of key value pair. where key is a number and value is an array of objects arrays arrays

How to define Typescript Map of key value pair. where key is a number and value is an array of objects


First thing, define a type or interface for your object, it will make things much more readable:

type Product = { productId: number; price: number; discount: number };

You used a tuple of size one instead of array, it should look like this:

let myarray: Product[];let priceListMap : Map<number, Product[]> = new Map<number, Product[]>();

So now this works fine:

myarray.push({productId : 1 , price : 100 , discount : 10});myarray.push({productId : 2 , price : 200 , discount : 20});myarray.push({productId : 3 , price : 300 , discount : 30});priceListMap.set(1 , this.myarray);myarray = null;

(code in playground)


you can also skip creating dictionary altogether. i used below approach to same problem .

 mappedItems: {}; items.forEach(item => {             if (mappedItems[item.key]) {           mappedItems[item.key].push({productId : item.productId , price : item.price , discount : item.discount});        } else {          mappedItems[item.key] = [];          mappedItems[item.key].push({productId : item.productId , price : item.price , discount : item.discount}));        }    });


The most simple way is to use Record type Record<number, productDetails>

interface productDetails {   productId : number ,    price : number ,    discount : number};const myVar : Record<number, productDetails> = {   1: {       productId : number ,        price : number ,        discount : number   }}