Мне кажется, что вы пытаетесь вернуть объект, поэтому я считаю, что вы хотите вернуть Omit<T, U>
, а не Exclude<T, U>
:
Вы можете увидеть разницу здесь
Вот как можно избежать ошибок:
export const omit = <T, U extends keyof T>(obj: T, keys: U[]): Omit<T, U> =>
(Object.keys(obj) as U[]).reduce(
(acc, curr) => (keys.includes(curr) ? acc : { ...acc, [curr]: obj[curr] }),
{} as Omit<T, U>
);