UNPKG

react-querybuilder

Version:

React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts

35 lines (30 loc) 1.06 kB
import type { Except } from "./except.mjs"; import type { IfAny } from "./if-any.mjs"; import type { IfNever } from "./if-never.mjs"; import type { IfNotAnyOrNever } from "./internal/index.mjs"; /** Create a type that requires at least one of the given keys. The remaining keys are kept as is. @example ``` import type {RequireAtLeastOne} from 'type-fest'; type Responder = { text?: () => string; json?: () => string; secure?: boolean; }; const responder: RequireAtLeastOne<Responder, 'text' | 'json'> = { json: () => '{"message": "ok"}', secure: true }; ``` @group type-fest */ export type RequireAtLeastOne< ObjectType, KeysType extends keyof ObjectType = keyof ObjectType > = IfNotAnyOrNever<ObjectType, IfNever<KeysType, never, _RequireAtLeastOne<ObjectType, IfAny<KeysType, keyof ObjectType, KeysType>>>>; type _RequireAtLeastOne< ObjectType, KeysType extends keyof ObjectType > = { [Key in KeysType]-? : Required<Pick<ObjectType, Key>> & Partial<Pick<ObjectType, Exclude<KeysType, Key>>> }[KeysType] & Except<ObjectType, KeysType>; export {};