Is there a way to make Typescript smarter when implementing a class? - Theo's Typesafe Cult