UNPKG

type-plus

Version:
76 lines 4.3 kB
import type { AnyRecord } from './AnyRecord.js'; import type { Omit } from './omit.js'; import type { Partial } from './Partial.js'; import type { NonUndefined } from '../utils/NonUndefined.js'; type Splitter<T extends AnyRecord> = Partial<{ [k in keyof T]: T[k] | undefined; }>; export type Split<T extends AnyRecord, S extends AnyRecord> = { [k in keyof S]-?: S[k] extends undefined ? T[k] : NonNullable<T[k]> | NonUndefined<S[k]>; }; /** * Split an object into multiple objects. * @returns [...entries, remaining] */ export declare function split<T extends AnyRecord, S1 extends Splitter<T>>(target: T, split1: S1): [Split<T, S1>, Omit<T, keyof S1>]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>>(target: T, split1: S1, split2: S2): [Split<T, S1>, Split<T, S2>, Omit<T, keyof S1 | keyof S2>]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3): [Split<T, S1>, Split<T, S2>, Split<T, S3>, Omit<T, keyof S1 | keyof S2 | keyof S3>]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4> ]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>, S5 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4, splitter5: S5): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Split<T, S5>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4 | keyof S5> ]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>, S5 extends Splitter<T>, S6 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4, splitter5: S5, splitter6: S6): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Split<T, S5>, Split<T, S6>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4 | keyof S5 | keyof S6> ]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>, S5 extends Splitter<T>, S6 extends Splitter<T>, S7 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4, splitter5: S5, splitter6: S6, splitter7: S7): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Split<T, S5>, Split<T, S6>, Split<T, S7>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4 | keyof S5 | keyof S6 | keyof S7> ]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>, S5 extends Splitter<T>, S6 extends Splitter<T>, S7 extends Splitter<T>, S8 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4, splitter5: S5, splitter6: S6, splitter7: S7, splitter8: S8): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Split<T, S5>, Split<T, S6>, Split<T, S7>, Split<T, S8>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4 | keyof S5 | keyof S6 | keyof S7 | keyof S8> ]; export declare function split<T extends AnyRecord, S1 extends Splitter<T>, S2 extends Splitter<T>, S3 extends Splitter<T>, S4 extends Splitter<T>, S5 extends Splitter<T>, S6 extends Splitter<T>, S7 extends Splitter<T>, S8 extends Splitter<T>, S9 extends Splitter<T>>(target: T, splitter1: S1, splitter2: S2, splitter3: S3, splitter4: S4, splitter5: S5, splitter6: S6, splitter7: S7, splitter8: S8, splitter9: S9): [ Split<T, S1>, Split<T, S2>, Split<T, S3>, Split<T, S4>, Split<T, S5>, Split<T, S6>, Split<T, S7>, Split<T, S8>, Split<T, S9>, Omit<T, keyof S1 | keyof S2 | keyof S3 | keyof S4 | keyof S5 | keyof S6 | keyof S7 | keyof S8 | keyof S9> ]; export {}; //# sourceMappingURL=split.d.ts.map