function omit<T, P extends keyof T>(obj: T, okeys: P[]) {
return (Object.keys(obj) as Array<keyof T>).reduce((newObj, key)=> {
for (const filKey of okeys) {
if (filKey != key) {
newObj[key] = obj[key];
}
}
return newObj;
}, {} as Omit<T,P>)
}
我想省略obj中的几个属性
3条答案
按热度按时间brtdzjyr1#
不需要泛型函数,只需写例如:
filtered
将包含source
除omit1
和omit2
之外的所有属性。如果你有字符串数组的键,你可以使用这样的方法:
envsm3lx2#
可以使用
Object.entries
和Object.fromEntries
过滤掉对象的属性。它也会使打字变得不那么麻烦。你只需要对最终结果进行强制转换:Playground链接
9lowa7mx3#