Memoize tipado en TypeScript
Memoización que mantiene intacta la firma original.
function memoize<A extends unknown[], R>(
fn: (...args: A) => R,
): (...args: A) => R {
const cache = new Map<string, R>();
return (...args: A): R => {
const key = JSON.stringify(args);
if (!cache.has(key)) {
cache.set(key, fn(...args));
}
return cache.get(key) as R;
};
}
Palabras clave y builtins usados aquí
AJSONMapasconstextendsfunctionifreturnstring
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 272
- Tokens
- 103
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 59 segundos.
Paso 1 de 5 en Tiempo y memoria; paso 14 de 19 en Clases y patrones.