From 2d2913f0c94162766fe838201ecd119694d8b85e Mon Sep 17 00:00:00 2001 From: Noel De Martin Date: Mon, 21 Jun 2021 17:33:59 +0200 Subject: [PATCH] MOBILE-3320 DX: Implement withoutUndefined helper --- src/core/singletons/object.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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; + } + }