Comment puis-je obtenir autour de ce “Sujet de manière incorrecte s'étend Observables” erreur en caractères d'imprimerie 2.4 et RxJS 5.x?
Quand je compile, j'obtiens l'erreur suivante compilateur dans le RxJS déclaration des fichiers:
node_modules/rxjs/Subject.d.ts(16,22): error TS2415: Class 'Subject<T>' incorrectly extends base class 'Observable<T>'.
Types of property 'lift' are incompatible.
Type '<R>(operator: Operator<T, R>) => Observable<T>' is not assignable to type '<R>(operator: Operator<T, R>) => Observable<R>'.
Type 'Observable<T>' is not assignable to type 'Observable<R>'.
Type 'T' is not assignable to type 'R'.
Ce qui se passe ici, et comment puis-je obtenir autour de cette sans déclassement de la Machine 2.3 ou une version antérieure?
Vous devez vous connecter pour publier un commentaire.
Solution
RxJS 5.4.2 devrait maintenant fonctionner parfaitement avec Tapuscrit 2.4.1. Simplement la mise à niveau vers 5.4.2+ si possible.
Si pas, ci-dessous la solution devrait fonctionner.
Pourquoi il se passe
Tapuscrit 2.4 a une rigueur changement, et
Subject<T>
n'est pas levée à la bonneObservable
. La signature devrait vraiment avoir étéCela sera corrigé dans les RxJS 6.
Solution Alternative
Des versions plus récentes de RxJS aura ce problème, mais comme une solution temporaire, vous pouvez utiliser le
noStrictGenericChecks
option du compilateur.Dans
tsconfig.json
, le mettre dans"compilerOptions"
et mis àtrue
.Sur la ligne de commande c'est
--noStrictGenericChecks
.compilerOptions
dans votretsconfig.json
. Il suffit de retirer les tirets et le configurer pourtrue
.Aujourd'hui, face à cette erreur, et résolu ce pratiquement avec le ci-dessous en trois étapes. Donc partager la même avec l'espoir, il va aider les autres.
Étape 1: Dans le package.fichier json modifiez l'entrée de la "rxjs": "5.4.2",
Étape 2: Supprimer le dossier node_modules du projet,qui est présent dans le répertoire racine
Étape 3 : Maintenant ,cliquez-Droit sur le package.fichier json et cliquez sur restaurer comme indiqué ci-dessous:
Remarque : Il sera de nouveau créer node_module dossier avec les nouveaux fichiers, Maintenant construire la solution, j'espère que vous ne devriez pas obtenir toute erreur de construction liées au problème ci-dessus.
Ajouter
dans le tsconfig.fichier json
J'ai fait ci-dessous deux changements dans le paquet.fichier json.
1) changé le rxjs version 5.4.1 dans la section des dépendances.
"dépendances":
{
"rxjs": "5.4.1"
}
2) changé le tapuscrit version 2.4.0 dans devDependencies section.
"devDependencies": {
"tapuscrit": "2.4.0"
}
J'ai couru 'npm install de "commande" après avoir fait les deux changements et cela a fonctionné.
Dans votre classe du Sujet:
modifier cette ligne:
à :
J'ai fait les changements suivants dans le paquet.fichier json.
Changements dans rxjs et tapuscrit version.
C'est un problème d'incompatibilité entre rxjs et typscript, à l'aide de "rxjs": "5.4.2" et "tapuscrit": "~2.3.4" fonctionne pour moi
J'ai rencontré le même problème et trouvé ce site utile https://www.georgephillipson.com/blog/jquery/setting-up-angular-2-in-visual-studio-2017/ il avait des instructions étape par étape sur la configuration Angulaire pour un site web MVC a expliqué comment réparer l'erreur que ce post fait référence à et aussi un lien vers GitHub avec le code complet.
Je l'ai trouvé utile donc pensé que je pourrais laisser les autres savoir
Comme par Zoes post, j'ai ajouté plus de la raison pour laquelle je pense que le lien peut être utile
La page indique comment mettre à jour le RxJS pour corriger l'erreur, il montre également comment vérifier si vous avez Nœud et NPM installé sur votre ordinateur et explique comment ajouter du texte dactylographié, il montre ensuite comment configurer votre cshtml fichier pour afficher Angulaire de contenu
Dans le tsconfig.json, le mettre dans "compilerOptions" et attribuez la valeur true.