Я довольно давно пишу на js и всегда считал подобную задачу тривиальной, но на typescript не могу ее решить уже несколько дней.
Есть объект, свойства которого нужно обновить
const dest = {
a2: 'a-empty',
b2: 'b-empty',
c2: 'c-empty'
}
Есть объект, из которого нужно взять новые значения
const source = {
a1: 'a-new',
c1: 'c-new'
}
Есть объект, который содержит значения по умолчанию (если их нет в source)
const defs = {
a2: 'a-def',
b2: 'b-def',
c2: 'c-def'
}
И, наконец, есть объект, который задает маппинг полей
const map = {
a2: 'a1',
b2: 'b1',
c2: 'c1'
}
Нужно обновить поля объекта desc значениями из объекта source по таблице map. Если в source нет нужного значения, то взять соответствующее из defs.
На js (как вариант!) я бы это сделал так
for (const toKey in dest) {
const fromKey = map[toKey];
dest[toKey] = typeof source[fromKey] === 'undefined' ? defs[toKey] : source[fromKey];
}
Пусть это не самый красивый или "идеологически правильный вариант", но это работает! Как сделать подобное на TypeScript понять не могу, т.к. постоянно получаю ошибки и замечания IDE и компилятора...