UNPKG

1.01 kBTypeScriptView Raw
1import { _Pick } from './Pick';
2import { Key } from '../Any/Key';
3import { Keys } from '../Any/Keys';
4import { RequiredFlat } from './Required';
5import { Extends } from '../Any/Extends';
6import { ComputeRaw } from '../Any/Compute';
7import { OptionalFlat } from './Optional';
8/**
9 * @hidden
10 */
11declare type RequiredIfKeys<O extends object, K extends Key> = Extends<keyof O & K, K> extends 1 ? RequiredFlat<O> : O;
12/**
13 * @hidden
14 */
15declare type __AtLeast<O extends object, K extends Key> = K extends keyof O ? _Pick<O, K> & OptionalFlat<O> : O;
16/**
17 * @hidden
18 */
19declare type _AtLeast<O extends object, K extends Key> = ComputeRaw<__AtLeast<RequiredIfKeys<O, K>, K>>;
20/**
21 * Make that at least one of the keys `K` are required in `O` at a time.
22 * @param O to make required
23 * @param K (?=`keyof O`) to choose fields
24 * @returns [[Object]] [[Union]]
25 * @example
26 * ```ts
27 * ```
28 */
29export declare type AtLeast<O extends object, K extends Key = Keys<O>> = O extends unknown ? _AtLeast<O, K> : never;
30export {};