«No se puede inferir el argumento de tipo» en una clase de TypeScript que usa genéricos
Estoy creando un BehaviorSubject dentro de una clase genérica en TypeScript así:
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
interface Bar {
a: any;
}
class Foo<T extends Bar> {
subject = new BehaviorSubject<T[]>([]);
}
Aquí, subject está destinado a emitir arreglos de T. Sin embargo, el compilador (WebStorm) se queja del arreglo [] pasado al constructor de BehaviorSubject, diciendo:
Type argument cannot be inferred by usage
Obtengo el mismo resultado incluso si intento convertir el arreglo así:
subject = new BehaviorSubject<T[]>([] as T[]); // "Type argument cannot be inferred by usage"
Lo que puede ser una pista es que si el tipo T no extiende ningún otro tipo, no hay ningún error del compilador:
class Foo<T> {
subject = new BehaviorSubject<T[]>([]); // no warning here
}
Todo parece funcionar como se espera en tiempo de ejecución, pero tengo curiosidad por saber por qué encuentro este error.
Respuesta #1
Otra solución alternativa: abre Configuración -> Idiomas y Frameworks -> TypeScript y asegúrate de que el valor de Intérprete de Node apunte a la instalación correcta de Node. Consulta https://youtrack.jetbrains.com/issue/IDEA-278561
Respuesta #2
Parece que este problema se ha solucionado con una actualización de uno o más componentes, ya que ya no veo errores en el IDE. ¡Sigan adelante, no hay nada que ver!
- WebStorm 2019.3.4