typeFn=(...params:any)=>any;functionmemoize(fn:Fn):Fn{constroot=newMap();// trieconstansKey={};returnfunction(...params){letnode=root;for(constparamofparams){letnext=node.get(param);if(next===undefined){next=newMap();node.set(param,next);}node=next;}// Check if `ansKey` has been set.if(node.has(ansKey))returnnode.get(ansKey);constans=fn(...params);node.set(ansKey,ans);returnans;};}