Typescript generate types based on method name and method return type - Theo's Typesafe Cult