Type inference in TypeScript works structurally, just like the rest of the type system. When inferring a type, the compiler (usually) relates
members of the candidate types to determine generic type parameters. What this means is that if you have a class with a type parameter that isn't used, it's as if the type parameter simply didn't exist (for the purposes of inference).

Put more simply, do not have unused type parameters. In a more perfect world, this might be a compile error because it's so rarely the correct thing to do.