annotations-design-patterns
    Preparing search index...

    Function CachedFor

    • Como @Memoize pero con caducidad: cachea el resultado por combinación de argumentos y por instancia durante ttlMs milisegundos; después vuelve a ejecutar el método. Por compatibilidad, el TTL comienza al invocar el método incluso cuando el resultado es una Promise pendiente.

      La clave por defecto es JSON.stringify(args) y comparte las limitaciones de @Memoize (circulares lanzan, funciones/Symbol colisionan, el orden de propiedades genera claves distintas); para esos casos aporta tu propio resolver con la opción key.

      Parameters

      Returns <This extends object, Args extends unknown[], Return>(
          target: (this: This, ...args: Args) => Return,
          context: ClassMethodDecoratorContext<
              This,
              (this: This, ...args: Args) => Return,
          >,
      ) => (this: This, ...args: Args) => Return

      class Api {
      @CachedFor(60_000) // cache de 1 minuto
      fetchConfig(env: string): Config { ... }

      @CachedFor(60_000, { key: (user: User) => user.id })
      loadProfile(user: User): Profile { ... }
      }