diff --git a/src/core/singletons/object.ts b/src/core/singletons/object.ts index 0b3dbbc38..b0dd856c3 100644 --- a/src/core/singletons/object.ts +++ b/src/core/singletons/object.ts @@ -16,6 +16,10 @@ export type CoreObjectWithoutEmpty = { [k in keyof T]: T[k] extends undefined | null ? never : T[k]; }; +export type CoreObjectWithoutUndefined = { + [k in keyof T]: T[k] extends undefined ? never : T[k]; +}; + /** * Singleton with helper functions for objects. */ @@ -79,4 +83,24 @@ export class CoreObject { return cleanObj as CoreObjectWithoutEmpty; } + /** + * Create a new object without undefined values. + * + * @param obj Objet. + * @return New object without undefined values. + */ + static withoutUndefined(obj: T): CoreObjectWithoutUndefined { + const cleanObj = {}; + + for (const [key, value] of Object.entries(obj)) { + if (value === undefined) { + continue; + } + + cleanObj[key] = value; + } + + return cleanObj as CoreObjectWithoutUndefined; + } + }