Typescript generic abstract class - Why doesn't this abstract method inherit the class type