How can I conditionally set return type based on params - Theo's Typesafe Cult