rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
20 lines (17 loc) • 632 B
TypeScript
import type { Args, Call1W, Fn, Fn1 } from "../HKT";
/**
* Omit pairs from an object where the value satisfies the predicate.
*
* Sig: `(f: (x: unknown) => boolean, o: object) => object`
*/
export type OmitBy<F extends Fn1<never, boolean>, O extends object> = {
[K in keyof O as Call1W<F, O[K]> extends true ? never : K]: O[K];
};
/**
* [Fn] Omit pairs from an object where the value satisfies the predicate.
*
* Sig: `(f: (x: unknown) => boolean, o: object) => object`
*/
export default interface OmitByFn extends Fn<[Fn1<never, boolean>, object], object> {
def: ([f, o]: Args<this>) => OmitBy<typeof f, typeof o>;
}