/** * Comprueba si un objeto posee una propiedad propia (no heredada) con la clave especificada. * * Esta función actúa como un wrapper tipado sobre `Object.hasOwn`, garantizando * seguridad de tipos al restringir la clave (`key`) a las propiedades definidas * en el tipo del objeto (`T`). * * @typeParam T - Tipo del objeto sobre el cual se realizará la comprobación. * * @param obj - Objeto en el que se desea verificar la existencia de la propiedad. * @param key - Clave de la propiedad a comprobar; debe ser una clave válida de `T`. * * @returns `true` si el objeto tiene la propiedad como propia (no en su prototipo), * `false` en caso contrario. * * @example * ```ts * const user = { name: "Alice", age: 30 }; * * hasOwn(user, "name"); // true * hasOwn(user, "toString"); // false * ``` */ export const hasOwn = (obj: T, key: keyof T): boolean => { return Object.hasOwn(obj, key); }; export const ObjectHelper = { hasOwn, };