// TODO: A lot of this stuff could probably live in core-utils instead. // Review this file eventually for stuff that could go into core-utils. /** * Returns a copy of the given object ({ ...obj }) with the given keys omitted. * * @param obj Object to return with the keys omitted. * @param keys Keys to omit from the returned object. * @returns A copy of the given object with the given keys omitted. */ export const omit = <T extends object, K extends string | number | symbol>( obj: T, ...keys: K[] ): Omit<T, K> => { const copy = { ...obj } for (const key of keys) { delete copy[key as string] } return copy }