date-vir
Version:
Easy and explicit dates and times.
36 lines (35 loc) • 1.64 kB
TypeScript
import { type PartialWithUndefined, type SetRequiredAndNotNull } from '@augment-vir/common';
import { type FullDate } from '../full-date/full-date-shape.js';
import { type Timezone } from '../timezone/timezones.js';
/**
* Checks that the input has all the requested {@link FullDate} keys.
*
* @category Util
* @example
*
* ```ts
* import {hasFullDateKeys} from 'date-vir';
*
* hasFullDateKeys({year: 2024}, ['year']); // `true`
* hasFullDateKeys({year: 2024}, ['day']); // `false`
* ```
*/
export declare function hasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>,
/** A union of strings. */
RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>;
/**
* Asserts that the input has all the requested {@link FullDate} keys.
*
* @category Util
* @example
*
* ```ts
* import {assertHasFullDateKeys} from 'date-vir';
*
* assertHasFullDateKeys({year: 2024}, ['year']); // passes
* assertHasFullDateKeys({year: 2024}, ['day']); // fails
* ```
*/
export declare function assertHasFullDateKeys<SpecificTimezone extends Timezone, PartialFullDate extends PartialWithUndefined<FullDate<SpecificTimezone>>,
/** A union of strings. */
RequiredKeys extends keyof FullDate<SpecificTimezone>>(partialFullDate: PartialWithUndefined<FullDate<SpecificTimezone>>, keys: ReadonlyArray<RequiredKeys>): asserts partialFullDate is SetRequiredAndNotNull<PartialFullDate, RequiredKeys>;