1
- import type {
2
- EntityDefinition ,
3
- Comparer ,
4
- IdSelector ,
5
- EntityAdapter ,
6
- EntityId ,
7
- } from './models'
1
+ import type { EntityAdapter , EntityId , EntityAdapterOptions } from './models'
8
2
import { createInitialStateFactory } from './entity_state'
9
3
import { createSelectorsFactory } from './state_selectors'
10
4
import { createSortedStateAdapter } from './sorted_state_adapter'
11
5
import { createUnsortedStateAdapter } from './unsorted_state_adapter'
6
+ import type { WithRequiredProp } from '../tsHelpers'
12
7
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 >
22
11
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' ] >
26
15
27
16
/**
28
17
*
@@ -31,12 +20,12 @@ export function createEntityAdapter<T extends { id: EntityId }>(options?: {
31
20
* @public
32
21
*/
33
22
export function createEntityAdapter < T > (
34
- options : {
35
- selectId ?: IdSelector < T , EntityId >
36
- sortComparer ?: false | Comparer < T >
37
- } = { } ,
23
+ options : EntityAdapterOptions < T , EntityId > = { } ,
38
24
) : EntityAdapter < T , EntityId > {
39
- const { selectId, sortComparer } : EntityDefinition < T , EntityId > = {
25
+ const {
26
+ selectId,
27
+ sortComparer,
28
+ } : Required < EntityAdapterOptions < T , EntityId > > = {
40
29
sortComparer : false ,
41
30
selectId : ( instance : any ) => instance . id ,
42
31
...options ,
0 commit comments