ugly hack on omit

This commit is contained in:
MapleLeaf
2021-12-26 14:37:24 -06:00
parent 97581cfabd
commit ad482d84f8

View File

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