Solución
solution.tsTypeScript
type Fn = (n: number) => number;
function memoize(fn: Fn): Fn {
// Crea una caché con Map o un objeto
const cache = new Map<number, number>;
// Retorna una función que consulta la caché antes de llamar a fn
return (arg: number): number => {
// Si ya tiene registrada esa llave (argumento) se
// devuelve desde la caché
if( cache.has(arg)) {
return cache.get(arg);
}
// Si no, calcula resultado
const result: number = fn(arg);
// y lo registra en caché
cache.set(arg, result);
// Devuelve el resultado (solo la primera vez)
return result;
}
}
export function memoizeDouble(n: number): number {
const double = memoize((x: number) => x * 2);
return double(n);
}0respuestas