类型 'void' 无法分配给类型 'ObservableInput <Action>'

The type 'void' can not be assigned to the type 'ObservableInput <Action>'

当我尝试在我的效果中发送可观察到的动作时,我收到了下一个类型错误,如下所示:

 @Effect()
    rideSummary$: Observable<Action> = this.actions$.pipe(
        ofType<GetRideSummary>(RideActionTypes.GetRideSummary),
        map(action => action.payload),
        switchMap(payload => {
            const { ride, passenger } = payload;
            const allPassengers = [...ride.passengers, passenger];
            this.store.dispatch(new SetLoading);
            return this.directionService.computeRideRouteSummary(ride, allPassengers)
            .then((summary: RideRouteSummary) => {
                const updatedRoute = Geometry.newFromData({
                    type: Geometry.LINE_STRING,
                    coordinates: summary.route
                });

                const totalTime = summary.totalTime;
                const arrivalTime = ride.type === Ride.TYPE_TOWORK ?
                    ride.hour :
                    ride.hour + summary.totalTime;
                const departureTime = ride.type === Ride.TYPE_TOWORK ?
                    ride.hour - summary.totalTime :
                    ride.hour;
               this.store.dispatch(new UnsetLoading);
               return this.store.dispatch(new GetRideSummarySuccess({
                    updatedRoute,
                    totalTime,
                    arrivalTime,
                    departureTime
                }));
                }
            ).catch(error => {
                this.store.dispatch(new UnsetLoading);
                catchError(() => of(new HandleError(error)));
            });
        })
    );

类型错误说:

Unable to assign an argument of type "(payload: {ride: Ride; passenger: Passenger;}) => void" to the type parameter "(value: {ride: Ride; passenger: Passenger;}, index: number) => ObservableInput <Action> ".
The type 'void' can not be assigned to the type 'ObservableInput <Action>'.

我不确定代码有什么问题。好像跟promise有关的东西。有什么帮助吗?

效果被定义为 @Effect(),这意味着它需要一个 Action。 快速但肮脏的解决方法是将效果定义为 @Effect({dispatch: false})。 更合适的解决方法是删除效果中的所有商店调度和 return 一个动作。

一个简单的例子是:

switchMap(payload => {
  this.store.dispatch(new FooBar());
}

收件人:

switchMap(payload => {
  return new FooBar();
}