#742·reselect

How to Pass Generics to `createSelector` With Arguments?

Author: elsonelCreated Mar 10, 2025Updated Apr 12, 2026
LabelsTypeScript
typescript
export const selectFormValues = createSelector<
  [
    (state: RootState) => RootState['sliceValues'],
    (state: RootState, type: T) => T
  ],
  TypeToFormMap[T]
>(
  [
    (state) => state.sliceValues,
    (state, type) => type,
  ],
  (sliceValues, type) => sliceValues.formValuesMap[type]
);

Where could I define the generic T for something like this?

typescript
// Usage:

// TypeToFormMap['goal-form']
const values = useSelector((state: RootState) => selectFormValues(state, 'goal-form')