不。
TypeScript 检查类型是否匹配,但它不提供任何工具来迭代类型属性,因为所有类型注释在编译时都会消失。
如果要删除多个键,则此信息必须存在于“JS 层”上,因为“TS 层”(类型、接口等)会被编译出来,因此您必须在某个地方有一个普通的 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;
关于“没有 for 循环”的要求,这是不可能的,如果你想多次执行相同的操作,它要么是显式循环,要么是被语法隐藏的循环,比如{ ...obj }or Array.filter。