Skip to content

Commit 34bf78b

Browse files
author
ben.durrant
committed
remove index signature from selectors generic
1 parent 32d1964 commit 34bf78b

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

packages/toolkit/src/createSlice.ts

+9-11
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import type {
1515
import { createReducer, NotFunction } from './createReducer'
1616
import type { ActionReducerMapBuilder } from './mapBuilders'
1717
import { executeReducerBuilderCallback } from './mapBuilders'
18-
import type { NoInfer, Tail } from './tsHelpers'
18+
import type { Id, NoInfer, Tail } from './tsHelpers'
1919
import { freezeDraftable } from './utils'
2020
import type { CombinedSliceReducer } from './combineSlices'
2121

@@ -69,13 +69,13 @@ export interface Slice<
6969
*/
7070
getInitialState: () => State
7171

72-
getSelectors(): SliceDefinedSelectors<State, Selectors, State>
72+
getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State>>
7373

7474
getSelectors<RootState>(
7575
selectState: (rootState: RootState) => State
76-
): SliceDefinedSelectors<State, Selectors, RootState>
76+
): Id<SliceDefinedSelectors<State, Selectors, RootState>>
7777

78-
selectors: SliceDefinedSelectors<State, Selectors, { [K in Name]: State }>
78+
selectors: Id<SliceDefinedSelectors<State, Selectors, { [K in Name]: State }>>
7979

8080
injectInto(
8181
combinedReducer: CombinedSliceReducer<any>
@@ -91,16 +91,14 @@ interface InjectedSlice<
9191
Slice<State, CaseReducers, Name, Selectors>,
9292
'getSelectors' | 'selectors'
9393
> {
94-
getSelectors(): SliceDefinedSelectors<State, Selectors, State | undefined>
94+
getSelectors(): Id<SliceDefinedSelectors<State, Selectors, State | undefined>>
9595

9696
getSelectors<RootState>(
9797
selectState: (rootState: RootState) => State | undefined
98-
): SliceDefinedSelectors<State, Selectors, RootState>
98+
): Id<SliceDefinedSelectors<State, Selectors, RootState>>
9999

100-
selectors: SliceDefinedSelectors<
101-
State,
102-
Selectors,
103-
{ [K in Name]?: State | undefined }
100+
selectors: Id<
101+
SliceDefinedSelectors<State, Selectors, { [K in Name]?: State | undefined }>
104102
>
105103
}
106104

@@ -109,7 +107,7 @@ type SliceDefinedSelectors<
109107
Selectors extends SliceSelectors<State>,
110108
RootState
111109
> = {
112-
[K in keyof Selectors]: (
110+
[K in keyof Selectors as [string] extends [K] ? never : K]: (
113111
rootState: RootState,
114112
...args: Tail<Parameters<Selectors[K]>>
115113
) => ReturnType<Selectors[K]>

packages/toolkit/src/tests/createSlice.typetest.ts

+13
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,20 @@ const value = actionCreators.anyKey
500500
}
501501
}
502502

503+
/**
504+
* Test: slice selectors
505+
*/
506+
503507
{
508+
const sliceWithoutSelectors = createSlice({
509+
name: '',
510+
initialState: '',
511+
reducers: {},
512+
})
513+
514+
// @ts-expect-error
515+
sliceWithoutSelectors.selectors.foo
516+
504517
const sliceWithSelectors = createSlice({
505518
name: 'counter',
506519
initialState: { value: 0 },

0 commit comments

Comments
 (0)