/** * filter the properties in value * @param value {object} * @param propsToSkip */ export function omit(value: any, propsToSkip: string | string[]): any { if (!value) { return value; } const normalizedPropsToSkip = typeof propsToSkip === 'string' ? [propsToSkip] : propsToSkip; return Object.keys(value).reduce((result, prop) => { if (normalizedPropsToSkip.includes(prop)) { return result; } return { ...result, [prop]: value[prop] }; }, {}); } export function isFunction(value: any) { return typeof value === 'function'; } export function size(value: any[]): number { return isEmpty(value) ? 0 : value.length; } export function isNull(value: any): boolean { return value === undefined || value === null; } export function isEmpty(value: any[] | string): boolean { if (typeof value === 'string') { return !/\S/.test(value); } if (Array.isArray(value)) { return value.length === 0; } return isNull(value); }