I recently wanted to programmatically create several objects with dynamic keys inside another object (basically an object of objects) when working with TypeScript. Using the example below, I will show how I went about it:

Suppose we want to create objects with two properties: id and the url. I create a function which will take a string array of the urls and then loop over the array and create the objects one by one. Since I want to return all the newly created objects inside another object, I will then use the spread operator.

function createObjectsWithDynamicKeys(urls: string[]) {
    let objectKeyPrefix = "myObj_";
    let newObj;

    for (let i = 0; i < urls.length; i++) {
        newObj = {
            [`${objectKeyPrefix}${i}`]: {
                id: i,
                url: urls[i],
            },
            ...newObj
        }
        
 
    }
    
    return newObj;
 }

const urls: string[] = ["https://www.google.com", "https://www.bing.com", "https://www.yahoo.com"];

const result = createObjectsWithDynamicKeys(urls);

console.log(result); 
/*{
*  myObj_0: {
*    id: 0,
*    url: "https://www.google.com"
*  },
*  myObj_1: {
*    id: 1,
*    url: "https://www.bing.com"
*  },
*  myObj_2: {
*    id: 2,
*    url: "https://www.yahoo.com"
*  }
 }*/