UNPKG

@maddimathon/utility-typescript

Version:

TypeScript utilities (types, functions, classes) to use in various projects.

58 lines (57 loc) 1.53 kB
/** * @since 2.0.0-beta.3 * * @packageDocumentation */ /*! * @maddimathon/utility-typescript@2.0.0-beta.5 * @license MIT */ import type { Test } from '../../types/index.js'; /** * Deletes the properties of the given object whose types are undefined. * * @category Functions – Object * * @since 2.0.0-beta.3 */ export declare function deleteUndefinedProps<T_Obj extends object>(obj: T_Obj): deleteUndefinedProps.OmitUndefined<T_Obj>; /** * Utilities for the {@link deleteUndefinedProps} function. * * @category Functions – Object * * @since 2.0.0-beta.3 */ export declare namespace deleteUndefinedProps { /** * Utility for {@link OmitUndefined} type. * * @since 2.0.0-beta.3 * @internal */ type KeysToKeep<T_Obj extends object> = ({ [K in keyof T_Obj]: undefined extends T_Obj[K] ? never : K; } & { [key: number | string | symbol]: never; })[keyof T_Obj]; /** * Utility for {@link OmitUndefined} type. * * @since 2.0.0-beta.3 * @internal */ type KeysToPartialize<T_Obj extends object> = ({ [K in keyof T_Obj]: Test.Exactly<T_Obj[K], undefined> extends true ? never : undefined extends T_Obj[K] ? K : never; } & { [key: number | string | symbol]: never; })[keyof T_Obj]; /** * @experimental */ type OmitUndefined<T_Obj extends object> = { [K in KeysToKeep<T_Obj>]: T_Obj[K]; } & { [K in KeysToPartialize<T_Obj>]?: Exclude<T_Obj[K], undefined>; }; }