Нет.
TypeScript проверяет соответствие типов, но не предоставляет никакой утилиты для перебора свойств типа, потому что все аннотации типов исчезают во время компиляции.
Если вы хотите удалить несколько ключей, эта информация должна будет присутствовать на уровне «JS», потому что «уровень TS» (типы, интерфейсы и т. д. c) компилируется, поэтому вам придется иметь где-то простой JS объект или массив со всеми ключами, которые нужно удалить (или оставить). Возможные реализации:
// keep only the keys you want
const bar = {
name: bar.name,
lastName: bar.lastName,
address: bar.address,
}
// same but with a helper
const keepProps = (src, keys) => Object
.entries(src)
.reduce(
(dst, [key, value]) => {
if (keys.includes(key)) dst[key] = value;
return dst;
},
{}
);
const bar = keepProps(foo, ['name', 'lastName', 'address']);
// remove unwanted keys
const bar = { ...foo }; // spread is required to create a different object reference
delete bar.more;
delete bar.prop;
Что касается требования «нет для l oop», это будет невозможно, если вы захотите выполнить несколько раз одну и ту же операцию, это будет либо явное l oop или l oop, скрытое синтаксисом, например { ...obj }
или Array.filter
.