diff --git a/packages/toolkit/src/createSlice.ts b/packages/toolkit/src/createSlice.ts index ac93394041..e102e3dfbd 100644 --- a/packages/toolkit/src/createSlice.ts +++ b/packages/toolkit/src/createSlice.ts @@ -233,15 +233,14 @@ createSlice({ selectors?: Selectors } -const reducerDefinitionType: unique symbol = Symbol.for('rtk-reducer-type') -enum ReducerType { +export enum ReducerType { reducer = 'reducer', reducerWithPrepare = 'reducerWithPrepare', asyncThunk = 'asyncThunk', } interface ReducerDefinition { - [reducerDefinitionType]: T + _reducerDefinitionType: T } export interface CaseReducerDefinition< @@ -375,7 +374,7 @@ export interface ReducerCreators { ReturnType<_ActionCreatorWithPreparedPayload> > ): { - [reducerDefinitionType]: ReducerType.reducerWithPrepare + _reducerDefinitionType: ReducerType.reducerWithPrepare prepare: Prepare reducer: CaseReducer< State, @@ -748,7 +747,7 @@ function buildReducerCreators(): ReducerCreators { config: AsyncThunkSliceReducerConfig ): AsyncThunkSliceReducerDefinition { return { - [reducerDefinitionType]: ReducerType.asyncThunk, + _reducerDefinitionType: ReducerType.asyncThunk, payloadCreator, ...config, } @@ -765,13 +764,13 @@ function buildReducerCreators(): ReducerCreators { }, }[caseReducer.name], { - [reducerDefinitionType]: ReducerType.reducer, + _reducerDefinitionType: ReducerType.reducer, } as const ) }, preparedReducer(prepare, reducer) { return { - [reducerDefinitionType]: ReducerType.reducerWithPrepare, + _reducerDefinitionType: ReducerType.reducerWithPrepare, prepare, reducer, } @@ -813,14 +812,14 @@ function handleNormalReducerDefinition( function isAsyncThunkSliceReducerDefinition( reducerDefinition: any ): reducerDefinition is AsyncThunkSliceReducerDefinition { - return reducerDefinition[reducerDefinitionType] === ReducerType.asyncThunk + return reducerDefinition._reducerDefinitionType === ReducerType.asyncThunk } function isCaseReducerWithPrepareDefinition( reducerDefinition: any ): reducerDefinition is CaseReducerWithPrepareDefinition { return ( - reducerDefinition[reducerDefinitionType] === ReducerType.reducerWithPrepare + reducerDefinition._reducerDefinitionType === ReducerType.reducerWithPrepare ) } diff --git a/packages/toolkit/src/index.ts b/packages/toolkit/src/index.ts index b2153e7804..99814e0620 100644 --- a/packages/toolkit/src/index.ts +++ b/packages/toolkit/src/index.ts @@ -67,6 +67,7 @@ export type { export { // js createSlice, + ReducerType, } from './createSlice' export type { @@ -78,6 +79,7 @@ export type { ValidateSliceCaseReducers, CaseReducerWithPrepare, ReducerCreators, + SliceSelectors, } from './createSlice' export type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware' export { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'