or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

index.mddocs/

@emotion/memoize

@emotion/memoize is a simple and efficient memoization utility function that caches the results of expensive function calls based on string arguments. It provides a lightweight caching mechanism to avoid redundant calculations for functions that accept string parameters.

Package Information

  • Package Name: @emotion/memoize
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @emotion/memoize

Core Imports

import memoize from "@emotion/memoize";

For CommonJS:

const memoize = require("@emotion/memoize");

Basic Usage

import memoize from "@emotion/memoize";

// Define a function that performs expensive computation
function expensiveComputation(input: string): string {
  console.log(`Computing for: ${input}`);
  return input.toUpperCase().repeat(3);
}

// Create a memoized version
const memoizedCompute = memoize(expensiveComputation);

// First call - computation is performed
const result1 = memoizedCompute("hello"); // Logs: "Computing for: hello"
console.log(result1); // "HELLOHELLOHELLO"

// Second call with same input - result is cached
const result2 = memoizedCompute("hello"); // No log - cached result used
console.log(result2); // "HELLOHELLOHELLO"

// Different input - computation is performed
const result3 = memoizedCompute("world"); // Logs: "Computing for: world"
console.log(result3); // "WORLDWORLDWORLD"

// Note: Each memoized function maintains its own cache throughout its lifetime
// The cache uses Object.create(null) to prevent prototype pollution

Capabilities

Memoization Function

Creates a memoized version of a function that caches results based on string arguments.

/**
 * Creates a memoized version of a function that caches results based on string arguments
 * @param fn - Function to memoize that takes a string argument and returns a value
 * @returns Memoized function with the same signature as the input function
 */
function memoize<V>(fn: (arg: string) => V): (arg: string) => V;

Parameters:

  • fn: A function that accepts a single string argument and returns a value of type V

Returns:

  • A memoized version of the input function that maintains an internal cache

Type Safety:

  • The memoized function preserves the exact input and output types of the original function
  • Generic type parameter V represents the return type of the memoized function

Caching Behavior:

  • Uses Object.create(null) for the internal cache to avoid prototype pollution
  • Cache keys are the string arguments passed to the function
  • Results are cached indefinitely (no expiration or size limits)
  • Each memoized function maintains its own separate cache instance
  • Cache persists for the lifetime of the memoized function
  • Memory usage grows with unique string arguments; consider the function's usage pattern

Usage Examples:

// String transformation
const memoizedUpperCase = memoize((str: string) => str.toUpperCase());
console.log(memoizedUpperCase("hello")); // "HELLO"

// Complex computation returning objects
const memoizedParser = memoize((json: string) => JSON.parse(json));
const obj = memoizedParser('{"name": "John", "age": 30}');

// Function returning arrays
const memoizedSplit = memoize((str: string) => str.split(","));
const parts = memoizedSplit("a,b,c"); // ["a", "b", "c"]

// CSS processing example (common use case in emotion ecosystem)
const memoizedCSSProcessor = memoize((css: string) => {
  // Expensive CSS processing logic
  return css.replace(/\s+/g, " ").trim();
});

Type Information

The memoize function uses TypeScript generics to ensure type safety. The generic type parameter V represents the return type of the function being memoized, preserving the exact type through the memoization process. No additional types are exported by this package.