но дальше в switchMap не передается action - пишет, что он типа "never"
                  
                  
                  @Effect() settingsDelete$: Observable<Action> = this.actions$.pipe(
                  
                  
                      ofType(fromSettingsActions.SettingsActionsTypes.SettingsDeleteKey),
                  
                  
                      withLatestFrom(this.store$),
                  
                  
                      switchMap(([action, store]) => {
                  
                  
                          const settings = clone(store.settings);
                  
                  
                          if (settings.hasOwnProperty(action.key)) { // error: Property 'key' does not exist on type 'never'
                  
                  
                              delete settings[action.key];
                  
                  
                          }
                  
                  
                          return this.settingsDataService.updateSettings(settings)
                  
                  
                              .pipe(
                  
                  
                                  map(data => new fromSettingsActions.SettingsUpdateSuccessAction(data)),
                  
                  
                                  catchError(error => of(new fromSettingsActions.SettingsUpdateFailureAction(error)))
                  
                  
                              );
                  
                  
                      })
                  
                  
                  );
                  
                  
                
Использование состояния стора в эффектах является плохой практикой. У эффекта может быть свое состояние, конфиг на этапе запуска, и ему могут приходить необходимые данные в action. Больше он ни с чем взаимодействовать не должен. withLatestFrom<Action, [Action, Store]> или switchMap(([action, store]: [Action, Store]) => ...)
Обсуждают сегодня