2017-09-27 3 views
0

angular4 tapuscrit rxjs 5angular4 rxjs Observable réduisent le rendement du type différent alors d'origine passé dans

J'ai passé type complexe dans réduire méthode, mais je veux revenir le type d'être différent booléen.

Rite maintenant avec le code suivant, je reçois une erreur de type de retour ne correspond

Observable.from(myList).reduce((complex1, complex2) => { 
return complex1.flag && complex2.flag; // gives me error 
}) 
+0

de prend une fonction de carte, mais cela pourrait être quelque chose fait sur le côté abonné de l'observable? sinon vous pouvez le réduire avant de le mettre dans un observable. – rjustin

+0

Ou peut-être réduire n'est pas ce que vous voulez mais plutôt .map()? – rjustin

+0

Vous n'avez pas fourni de graine, donc l'accumulateur sera initialisé avec le premier élément. Ce qui signifie que son type sera le type d'élément. Cependant, vous renvoyez le résultat d'une expression booléenne - pas un élément. – cartant

Répondre

1

Deviner que myList est Array<{ flag: bool }> et que vous voulez vérifier si tous les drapeaux sont vraies, vous voulez probablement:

Observable.from(myList) 
      .reduce((accumulated, complex) => accumulated && complex.flag, true); 

Votre fonction de réduction est responsable de la combinaison de la valeur d'itération précédente (ou du second argument, initialement) avec la valeur nouvellement émise par votre Observable, afin de réduire votre flux à une valeur scalaire. De cette façon, votre fonction de réduction a le même type de retour que le type de premier argument et comme valeur finale. De