Динамически создавать свойства объекта

Я немного смущен тем, как объект с фигурными скобками работает в Typescript. По-видимому, есть разница, являются ли ключи строками или вы просто используете обычный текст в Typescript.

Мне нужно динамически создать объект со свойствами, которые выглядят так.

var ob = {
      gtin1:"one",
      gtin2:"two",
      gtin3:"tree",
}

Проблема в том, что ключи на самом деле не являются строками, поэтому я не могу просто объединить ключи, насколько я понимаю.

var ob = {
          "gtin" + "1" : "one",
          "gtin" + "2" : "two",
          "gtin" + "3" : "tree",
}

Как можно создать объект, динамически добавляя к нему конкатенированные свойства?

В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
1
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать [], чтобы обернуть значение динамического ключа

var ob = {
  ["gtin" + "1"]: "one",
  ["gtin" + "2"]: "two",
  ["gtin" + "3"]: "tree",
}

console.log(ob)

Более динамичный способ

const data = ["one", "two", "tree"]

const ob = {}
for (const [index, value] of Object.entries(data)) {
  ob["gtin" + (Number(index) + 1)] = value
}

console.log(ob)

Пример машинописного текста

const data = ["one", "two", "tree"]

const ob: {[key: string]: string} = {}
for (const [index, value] of Object.entries(data)) {
  ob["gtin" + (Number(index) + 1)] = value
}

console.log(ob)

Детская площадка

Другие вопросы по теме