I noticed that when implementing a generic interface (or class) and explicitly stating the types of those generics, the parameter types for functions inside the subclass are not inferred.
interface MyInterface<T> {
open(data: T): void
}
class MyClass implements MyInterface<string> {
open(data) {
// Data should be string, but is any
}
}
The current correct way to do this would be the following:
open(data: string) {
...
}
However, this forces me to enter the type multiple times which seems unnecessary. The following produces an error (which is expected):
open(data: number) {
...
}
Any type that isn't string gives an error, so shouldn't the compiler be able to infer that the type is string?