methuselah
methuselah

Reputation: 13206

What is the type for ActionReducerMap?

The following line

const reducers: ActionReducerMap<any> = {};

throws the error:

ESLint: Unexpected any. Specify a different type.(@typescript-eslint/no-explicit-any)

I'd like to know what the type for ActionReducerMap is?

Can I set it explicitly?

export const metaReducers: MetaReducer<State>[] = !environment.production ? [logger] : [];

interface State {
  router: fromRouter.RouterReducerState<BaseRouterStoreState>;
}

const reducers: ActionReducerMap<any> = {};

export function logger(reducer: ActionReducer<State>): ActionReducer<State> {
  return (state, action) => {
    const result = reducer(state, action);
    console.groupCollapsed(action.type);
    console.log('prev state', state);
    console.log('action', action);
    console.log('next state', result);
    console.groupEnd();
    return result;
  };
}

Here is my full code:

@NgModule({
  declarations: [AppComponent],
  imports: [
    StoreModule.forRoot(reducers, {
      metaReducers,
      runtimeChecks: {
        strictActionImmutability: true,
        strictStateImmutability: true,
      },
    }),
  ],
  bootstrap: [AppComponent],
})
export class AppModule {}

Upvotes: 1

Views: 1001

Answers (1)

KGDI
KGDI

Reputation: 46

You should define an interface:

export interface AppState {
    storeBooks: ReadonlyArray<book>;
}

export const reducers: ActionReducerMap<AppState> = {
    storeBooks: undefined
};

Upvotes: 2

Related Questions