Typeseedcordv0.10.6
ApplyDefaultOptions
Merges user specified options with default options.
type ApplyDefaultOptions<
Options extends object,
Defaults extends Simplify<
Omit<Required<Options>, RequiredKeysOf<Options>> &
Partial<
Record<RequiredKeysOf<Options>, never>
>
>,
SpecifiedOptions extends Options
> = If<
IsAny<SpecifiedOptions>,
Defaults,
If<
IsNever<SpecifiedOptions>,
Defaults,
Simplify<
Merge<
Defaults,
{
[Key in keyof SpecifiedOptions as Key extends OptionalKeysOf<Options>
? undefined extends SpecifiedOptions[Key]
? never
: Key
: Key]: SpecifiedOptions[Key];
}
> &
Required<Options>
>
>
>;type ApplyDefaultOptions<
Options extends object,
Defaults extends Simplify<
Omit<Required<Options>, RequiredKeysOf<Options>> &
Partial<
Record<RequiredKeysOf<Options>, never>
>
>,
SpecifiedOptions extends Options
> = If<
IsAny<SpecifiedOptions>,
Defaults,
If<
IsNever<SpecifiedOptions>,
Defaults,
Simplify<
Merge<
Defaults,
{
[Key in keyof SpecifiedOptions as Key extends OptionalKeysOf<Options>
? undefined extends SpecifiedOptions[Key]
? never
: Key
: Key]: SpecifiedOptions[Key];
}
> &
Required<Options>
>
>
>;Options
Defaults
Defaults extends Simplify<Omit<Required<Options>, RequiredKeysOf<Options>> & Partial<Record<RequiredKeysOf<Options>, never>>>Defaults extends Simplify<Omit<Required<Options>, RequiredKeysOf<Options>> & Partial<Record<RequiredKeysOf<Options>, never>>>SpecifiedOptions
SpecifiedOptions extends OptionsSpecifiedOptions extends Options