Учитывая объект, такой как:
const foo = {
a: {id: 1},
b: {id: 1},
c: {id: 1},
d: {id: 1},
....
}
и функция, которая преобразует объект в:
const bar = {
a: 1,
b: 1,
c: 1,
d: 1,
....
}
, таких как:
function<MyInputInterface>(map: MyInputInterface): MyOutputInterface? {
const newMap = {};
_.forIn(map, (val, key) => {
newMap[key] = val.id;
}
return newMap;
}
Есть ли способ определить только один интерфейс в Typescript, который автоматически принимает структуру другого (либо входного, либо выходного)?
Например. передача MyInputInterface
в функцию вернет MyOutputInterface
?
В общем, шаблон, который я описал, встречается во многих местах моей кодовой базы из-за того, что некоторая библиотека извлекает метаинформацию и возвращает только определенные значения (например, id). Я, безусловно, мог бы определить ввод / вывод как интерфейсы для получения больше информации о типе, но мне было бы интересно узнать, есть ли решение, которое должно было бы только определить либо ввод, либо вывод, и получить другую информацию о типе бесплатно.
Поскольку этот пример может быть недостаточно понятным, вот лучший пример:
const properties = {
propA: {
desc: 'property a',
val: 1
},
propB: {
desc: 'property b',
val: 'hello'
}
// any arbitrary number of properties
};
необходимо преобразовать в:
const parsedProperties = {
propA: 1,
probB: 'hello'
};