Memoize function in typescript - Theo's Typesafe Cult