Saltar al contenido principal

Objects - Visión General

Paquete: @tiendana/utils

Conjunto de funciones para manipular objetos JavaScript, incluyendo fusión profunda, validación de propiedades vacías y acceso a propiedades anidadas mediante rutas.

Funciones Disponibles​

deepMerge​

Fusiona dos objetos de forma recursiva, preservando la estructura anidada y manejando casos especiales como Date, null y arrays.

const config = deepMerge(defaultConfig, userConfig);

emptyKeys​

Identifica qué propiedades de un objeto tienen valores vacíos (null, undefined, '', NaN).

const emptyFields = emptyKeys(formData, ['name', 'email', 'phone']);
// ['email'] - solo email está vacío

getPath​

Accede a propiedades anidadas de forma segura mediante un array de strings que representa la ruta.

const city = getPath(user, ['address', 'city']);
// 'Madrid'

Casos de Uso Comunes​

Configuración de Aplicaciones​

import { deepMerge } from '@tiendana/utils';

const defaultConfig = {
theme: 'light',
notifications: {
email: true,
push: false
}
};

const userConfig = {
notifications: {
push: true
}
};

const finalConfig = deepMerge(defaultConfig, userConfig);
// {
// theme: 'light',
// notifications: {
// email: true,
// push: true ← Fusionado
// }
// }

Validación de Formularios​

import { emptyKeys } from '@tiendana/utils';

function validateForm(data: any, requiredFields: string[]): string[] {
return emptyKeys(data, requiredFields);
}

const formData = {
name: 'Juan',
email: '',
phone: '123456789'
};

const missing = validateForm(formData, ['name', 'email', 'phone']);
// ['email']

Acceso Seguro a Propiedades​

import { getPath } from '@tiendana/utils';

const user = {
profile: {
address: {
city: 'Madrid',
country: 'España'
}
}
};

// Sin getPath (puede fallar)
const city = user?.profile?.address?.city;

// Con getPath (más limpio)
const city = getPath(user, ['profile', 'address', 'city']);
// 'Madrid'

const zipCode = getPath(user, ['profile', 'address', 'zipCode']);
// undefined (no lanza error)

Cuándo Usar Cada Función​

FunciónUsar cuando...
deepMergeNecesitas combinar configuraciones u objetos con estructura anidada
emptyKeysNecesitas validar múltiples campos de un formulario o identificar datos faltantes
getPathNecesitas acceder a propiedades profundamente anidadas de forma segura

Características Comunes​

✅ Type-safe: Todas las funciones tienen tipos TypeScript bien definidos
✅ Null safety: Manejan correctamente valores null y undefined
✅ Inmutables: No modifican los objetos originales
✅ Performance: Operaciones eficientes sin librerías externas
✅ Zero dependencies: Implementaciones nativas sin dependencias adicionales

Ver También​

  • Validation - Funciones de validación que trabajan bien con objects
  • Arrays - Para trabajar con arrays de objetos