annotations-design-patterns
    Preparing search index...

    Function MemoizeByRef

    • Como @Memoize pero comparando los argumentos por IDENTIDAD (referencia), sin serialización: cada nivel de un trie interno indexa un argumento — los primitivos en un Map (SameValueZero: NaN funciona) y los objetos/funciones en un WeakMap, de modo que las entradas se liberan solas cuando el objeto argumento es recolectado.

      Semántica distinta a @Memoize: la MISMA referencia acierta la cache, pero dos literales estructuralmente iguales ({a:1} y {a:1}) son entradas DISTINTAS. Ideal para métodos que reciben entidades o funciones; inútil si cada llamada construye el argumento de cero.

      Ventajas frente a la clave JSON.stringify de @Memoize: los argumentos circulares no lanzan, las funciones y Symbol no colisionan y el orden de propiedades es irrelevante.

      Type Parameters

      • This
      • Args extends unknown[]
      • Return

      Parameters

      Returns (this: This, ...args: Args) => Return

      class Renderer {
      @MemoizeByRef
      layout(document: Document): Layout { ... } // misma entidad → cache
      }