Solución

@estouchedisindo·6/6/2026TypeScript
solution.tsTypeScript

export function deepFreeze(obj: Record<string, unknown>): boolean {
  // Congela el objeto raíz con Object.freeze()
  // Recorre recursivamente cada propiedad que sea un objeto y congélala también
  // Retorna true si todos los niveles quedaron congelados
  const keys: string[] = Object.keys(obj)
  
  // Congela las props. del obj. que sean objetos a su vez, o funciones
  for(let key of keys) {
    // Si la llave no es nula, es un objecto (o arreglo) o una función, entonces los pasamos como argumento
    if( ( key && typeof key === 'object') || typeof key === 'function' ) {
      deepFreeze(key);
    }
    continue;
  }
  // Congela el obj en general
  Object.freeze(obj);

  // Comprueba si el 'obj' está congelado y si todas las llaves también
  return Object.isFrozen(obj) && keys.every( key => Object.isFrozen(key));
}
// ¡¡OJO!! Con las referencias circulares y la congelaciones no deseadas, como el objeto "window".Las funciones creadas con la sintaxis `function` tienen una propiedad `prototype` con una propiedad `constructor` que apunta a la propia función, por ejemplo.
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.