Búsqueda de sitios web

«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
  • [email
  • [email