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ón | Usar cuando... |
|---|---|
deepMerge | Necesitas combinar configuraciones u objetos con estructura anidada |
emptyKeys | Necesitas validar múltiples campos de un formulario o identificar datos faltantes |
getPath | Necesitas 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