Skip to content

Commit 244b3e3

Browse files
committed
tweak types
1 parent edf9c11 commit 244b3e3

File tree

2 files changed

+21
-30
lines changed

2 files changed

+21
-30
lines changed

packages/toolkit/src/entities/create_adapter.ts

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,17 @@
1-
import type {
2-
EntityDefinition,
3-
Comparer,
4-
IdSelector,
5-
EntityAdapter,
6-
EntityId,
7-
} from './models'
1+
import type { EntityAdapter, EntityId, EntityAdapterOptions } from './models'
82
import { createInitialStateFactory } from './entity_state'
93
import { createSelectorsFactory } from './state_selectors'
104
import { createSortedStateAdapter } from './sorted_state_adapter'
115
import { createUnsortedStateAdapter } from './unsorted_state_adapter'
6+
import type { WithRequiredProp } from '../tsHelpers'
127

13-
export interface EntityAdapterOptions<T, Id extends EntityId> {
14-
selectId?: IdSelector<T, Id>
15-
sortComparer?: false | Comparer<T>
16-
}
17-
18-
export function createEntityAdapter<T, Id extends EntityId>(options: {
19-
selectId: IdSelector<T, Id>
20-
sortComparer?: false | Comparer<T>
21-
}): EntityAdapter<T, Id>
8+
export function createEntityAdapter<T, Id extends EntityId>(
9+
options: WithRequiredProp<EntityAdapterOptions<T, Id>, 'selectId'>,
10+
): EntityAdapter<T, Id>
2211

23-
export function createEntityAdapter<T extends { id: EntityId }>(options?: {
24-
sortComparer?: false | Comparer<T>
25-
}): EntityAdapter<T, T['id']>
12+
export function createEntityAdapter<T extends { id: EntityId }>(
13+
options?: Omit<EntityAdapterOptions<T, T['id']>, 'selectId'>,
14+
): EntityAdapter<T, T['id']>
2615

2716
/**
2817
*
@@ -31,12 +20,12 @@ export function createEntityAdapter<T extends { id: EntityId }>(options?: {
3120
* @public
3221
*/
3322
export function createEntityAdapter<T>(
34-
options: {
35-
selectId?: IdSelector<T, EntityId>
36-
sortComparer?: false | Comparer<T>
37-
} = {},
23+
options: EntityAdapterOptions<T, EntityId> = {},
3824
): EntityAdapter<T, EntityId> {
39-
const { selectId, sortComparer }: EntityDefinition<T, EntityId> = {
25+
const {
26+
selectId,
27+
sortComparer,
28+
}: Required<EntityAdapterOptions<T, EntityId>> = {
4029
sortComparer: false,
4130
selectId: (instance: any) => instance.id,
4231
...options,

packages/toolkit/src/entities/models.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ export interface EntityState<T, Id extends EntityId> {
3535
/**
3636
* @public
3737
*/
38-
export interface EntityDefinition<T, Id extends EntityId> {
39-
selectId: IdSelector<T, Id>
40-
sortComparer: false | Comparer<T>
38+
export interface EntityAdapterOptions<T, Id extends EntityId> {
39+
selectId?: IdSelector<T, Id>
40+
sortComparer?: false | Comparer<T>
4141
}
4242

4343
export type PreventAny<S, T, Id extends EntityId> = CastAny<
@@ -166,6 +166,9 @@ export interface EntitySelectors<T, V, Id extends EntityId> {
166166
selectById: (state: V, id: Id) => Compute<UncheckedIndexedAccess<T>>
167167
}
168168

169+
/**
170+
* @public
171+
*/
169172
export interface EntityStateFactory<T, Id extends EntityId> {
170173
getInitialState(
171174
state?: undefined,
@@ -182,9 +185,8 @@ export interface EntityStateFactory<T, Id extends EntityId> {
182185
*/
183186
export interface EntityAdapter<T, Id extends EntityId>
184187
extends EntityStateAdapter<T, Id>,
185-
EntityStateFactory<T, Id> {
186-
selectId: IdSelector<T, Id>
187-
sortComparer: false | Comparer<T>
188+
EntityStateFactory<T, Id>,
189+
Required<EntityAdapterOptions<T, Id>> {
188190
getSelectors(
189191
selectState?: undefined,
190192
options?: GetSelectorsOptions,

0 commit comments

Comments
 (0)