Files
reacord/packages/reacord/helpers/omit.ts
MapleLeaf 88e9919c8f workspace
2021-12-29 13:19:46 -06:00

15 lines
437 B
TypeScript

// eslint-disable-next-line import/no-unused-modules
export function omit<Subject extends object, Key extends PropertyKey>(
subject: Subject,
keys: Key[],
// hack: using a conditional type preserves union types
): Subject extends any ? Omit<Subject, Key> : never {
const result: any = {}
for (const key in subject) {
if (!keys.includes(key as unknown as Key)) {
result[key] = subject[key]
}
}
return result
}