20 lines
448 B
TypeScript
20 lines
448 B
TypeScript
interface Omit {
|
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
<T extends object, K extends [...(keyof T)[]]>(obj: T, ...keys: K): {
|
|
[K2 in Exclude<keyof T, K[number]>]: T[K2]
|
|
}
|
|
}
|
|
|
|
export const omit: Omit = (obj, ...keys) => {
|
|
const ret = {} as {
|
|
[K in keyof typeof obj]: typeof obj[K]
|
|
}
|
|
let key: keyof typeof obj
|
|
for (key in obj) {
|
|
if (!keys.includes(key)) {
|
|
ret[key] = obj[key]
|
|
}
|
|
}
|
|
return ret
|
|
}
|