【发布时间】:2018-10-19 20:11:21
【问题描述】:
当我尝试在我的效果中分派可观察的操作时,我收到下一个类型错误,如下所示:
@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 有关。有什么帮助吗?
【问题讨论】:
-
我不知道 RxJS,如果你标记了发生错误的行,它会有所帮助,但在这种情况下,我很好地猜测了这个问题:a missing
returnbeforethis.directionService.computeRideRouteSummary(...).
标签: angular typescript observable ngrx ngrx-store