Skip to content

Commit 1314ba4

Browse files
author
Lenz Weber
authored
remove any where applicable (#377)
* remove `any` where applicable * re-add `| undefined`, remove review comments
1 parent 191e22e commit 1314ba4

File tree

7 files changed

+73
-120
lines changed

7 files changed

+73
-120
lines changed

etc/redux-toolkit.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export interface CreateSliceOptions<State = any, CR extends SliceCaseReducers<St
159159
}
160160

161161
// @alpha (undocumented)
162-
export abstract class Dictionary<T> implements DictionaryNum<T> {
162+
export interface Dictionary<T> extends DictionaryNum<T> {
163163
// (undocumented)
164164
[id: string]: T | undefined;
165165
}

src/createAction.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,14 @@ export function createAction(type: string, prepareAction?: Function): any {
296296
return actionCreator
297297
}
298298

299-
export function isFSA<
300-
Payload = undefined,
301-
Type extends string = string,
302-
Meta = undefined
303-
>(action: any): action is PayloadAction<Payload, Type, Meta> {
299+
export function isFSA(
300+
action: unknown
301+
): action is {
302+
type: string
303+
payload?: unknown
304+
error?: unknown
305+
meta?: unknown
306+
} {
304307
return (
305308
isPlainObject(action) &&
306309
typeof (action as any).type === 'string' &&

src/entities/models.ts

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export interface DictionaryNum<T> {
2525
/**
2626
* @alpha
2727
*/
28-
export abstract class Dictionary<T> implements DictionaryNum<T> {
28+
export interface Dictionary<T> extends DictionaryNum<T> {
2929
[id: string]: T | undefined
3030
}
3131

@@ -39,11 +39,6 @@ export type Update<T> = { id: EntityId; changes: Partial<T> }
3939
*/
4040
export type EntityMap<T> = (entity: T) => T
4141

42-
/**
43-
* @alpha
44-
*/
45-
export type TypeOrPayloadAction<T> = T | PayloadAction<T>
46-
4742
/**
4843
* @alpha
4944
*/
@@ -58,71 +53,48 @@ export interface EntityDefinition<T> {
5853
}
5954

6055
export interface EntityStateAdapter<T> {
61-
addOne<S extends EntityState<T>>(state: S, entity: TypeOrPayloadAction<T>): S
56+
addOne<S extends EntityState<T>>(state: S, entity: T): S
6257
addOne<S extends EntityState<T>>(state: S, action: PayloadAction<T>): S
6358

64-
addMany<S extends EntityState<T>>(
65-
state: S,
66-
entities: TypeOrPayloadAction<T[]>
67-
): S
59+
addMany<S extends EntityState<T>>(state: S, entities: T[]): S
6860
addMany<S extends EntityState<T>>(state: S, entities: PayloadAction<T[]>): S
6961

70-
setAll<S extends EntityState<T>>(
71-
state: S,
72-
entities: TypeOrPayloadAction<T[]>
73-
): S
62+
setAll<S extends EntityState<T>>(state: S, entities: T[]): S
7463
setAll<S extends EntityState<T>>(state: S, entities: PayloadAction<T[]>): S
7564

76-
removeOne<S extends EntityState<T>>(
77-
state: S,
78-
key: TypeOrPayloadAction<EntityId>
79-
): S
65+
removeOne<S extends EntityState<T>>(state: S, key: EntityId): S
8066
removeOne<S extends EntityState<T>>(state: S, key: PayloadAction<EntityId>): S
8167

68+
removeMany<S extends EntityState<T>>(state: S, keys: EntityId[]): S
8269
removeMany<S extends EntityState<T>>(
8370
state: S,
84-
keys: TypeOrPayloadAction<EntityId[]>
71+
keys: PayloadAction<EntityId[]>
8572
): S
8673

8774
removeAll<S extends EntityState<T>>(state: S): S
8875

89-
updateOne<S extends EntityState<T>>(
90-
state: S,
91-
update: TypeOrPayloadAction<Update<T>>
92-
): S
76+
updateOne<S extends EntityState<T>>(state: S, update: Update<T>): S
9377
updateOne<S extends EntityState<T>>(
9478
state: S,
9579
update: PayloadAction<Update<T>>
9680
): S
9781

98-
updateMany<S extends EntityState<T>>(
99-
state: S,
100-
updates: TypeOrPayloadAction<Update<T>[]>
101-
): S
82+
updateMany<S extends EntityState<T>>(state: S, updates: Update<T>[]): S
10283
updateMany<S extends EntityState<T>>(
10384
state: S,
10485
updates: PayloadAction<Update<T>[]>
10586
): S
10687

107-
upsertOne<S extends EntityState<T>>(
108-
state: S,
109-
entity: TypeOrPayloadAction<T>
110-
): S
88+
upsertOne<S extends EntityState<T>>(state: S, entity: T): S
11189
upsertOne<S extends EntityState<T>>(state: S, entity: PayloadAction<T>): S
11290

113-
upsertMany<S extends EntityState<T>>(
114-
state: S,
115-
entities: TypeOrPayloadAction<T[]>
116-
): S
91+
upsertMany<S extends EntityState<T>>(state: S, entities: T[]): S
11792
upsertMany<S extends EntityState<T>>(
11893
state: S,
11994
entities: PayloadAction<T[]>
12095
): S
12196

122-
map<S extends EntityState<T>>(
123-
state: S,
124-
map: TypeOrPayloadAction<EntityMap<T>>
125-
): S
97+
map<S extends EntityState<T>>(state: S, map: EntityMap<T>): S
12698
map<S extends EntityState<T>>(state: S, map: PayloadAction<EntityMap<T>>): S
12799
}
128100

src/entities/sorted_state_adapter.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EntityStateAdapter, EntityState, Update } from './models'
1+
import { EntityStateAdapter, EntityState } from './models'
22
import { createEntityAdapter } from './create_adapter'
33
import { createAction } from '../createAction'
44
import {

src/entities/sorted_state_adapter.ts

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
Comparer,
55
EntityStateAdapter,
66
Update,
7-
EntityMap
7+
EntityMap,
8+
EntityId
89
} from './models'
910
import { createStateOperator } from './state_adapter'
1011
import { createUnsortedStateAdapter } from './unsorted_state_adapter'
@@ -13,21 +14,18 @@ import { selectIdValue } from './utils'
1314
export function createSortedStateAdapter<T>(
1415
selectId: IdSelector<T>,
1516
sort: Comparer<T>
16-
): EntityStateAdapter<T>
17-
export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
17+
): EntityStateAdapter<T> {
1818
type R = EntityState<T>
1919

2020
const { removeOne, removeMany, removeAll } = createUnsortedStateAdapter(
2121
selectId
2222
)
2323

24-
function addOneMutably(entity: T, state: R): void
25-
function addOneMutably(entity: any, state: any): void {
24+
function addOneMutably(entity: T, state: R): void {
2625
return addManyMutably([entity], state)
2726
}
2827

29-
function addManyMutably(newModels: T[], state: R): void
30-
function addManyMutably(newModels: any[], state: any): void {
28+
function addManyMutably(newModels: T[], state: R): void {
3129
const models = newModels.filter(
3230
model => !(selectIdValue(model, selectId) in state.entities)
3331
)
@@ -37,21 +35,18 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
3735
}
3836
}
3937

40-
function setAllMutably(models: T[], state: R): void
41-
function setAllMutably(models: any[], state: any): void {
38+
function setAllMutably(models: T[], state: R): void {
4239
state.entities = {}
4340
state.ids = []
4441

4542
addManyMutably(models, state)
4643
}
4744

48-
function updateOneMutably(update: Update<T>, state: R): void
49-
function updateOneMutably(update: any, state: any): void {
45+
function updateOneMutably(update: Update<T>, state: R): void {
5046
return updateManyMutably([update], state)
5147
}
5248

53-
function takeUpdatedModel(models: T[], update: Update<T>, state: R): boolean
54-
function takeUpdatedModel(models: any[], update: any, state: any): boolean {
49+
function takeUpdatedModel(models: T[], update: Update<T>, state: R): boolean {
5550
if (!(update.id in state.entities)) {
5651
return false
5752
}
@@ -67,8 +62,7 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
6762
return newKey !== update.id
6863
}
6964

70-
function updateManyMutably(updates: Update<T>[], state: R): void
71-
function updateManyMutably(updates: any[], state: any): void {
65+
function updateManyMutably(updates: Update<T>[], state: R): void {
7266
const models: T[] = []
7367

7468
updates.forEach(update => takeUpdatedModel(models, update, state))
@@ -78,11 +72,10 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
7872
}
7973
}
8074

81-
function mapMutably(map: EntityMap<T>, state: R): void
82-
function mapMutably(updatesOrMap: any, state: any): void {
75+
function mapMutably(updatesOrMap: EntityMap<T>, state: R): void {
8376
const updates: Update<T>[] = state.ids.reduce(
84-
(changes: any[], id: string | number) => {
85-
const change = updatesOrMap(state.entities[id])
77+
(changes: Update<T>[], id: EntityId) => {
78+
const change = updatesOrMap(state.entities[id]!)
8679
if (change !== state.entities[id]) {
8780
changes.push({ id, changes: change })
8881
}
@@ -94,15 +87,13 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
9487
updateManyMutably(updates, state)
9588
}
9689

97-
function upsertOneMutably(entity: T, state: R): void
98-
function upsertOneMutably(entity: any, state: any): void {
90+
function upsertOneMutably(entity: T, state: R): void {
9991
return upsertManyMutably([entity], state)
10092
}
10193

102-
function upsertManyMutably(entities: T[], state: R): void
103-
function upsertManyMutably(entities: any[], state: any): void {
104-
const added: any[] = []
105-
const updated: any[] = []
94+
function upsertManyMutably(entities: T[], state: R): void {
95+
const added: T[] = []
96+
const updated: Update<T>[] = []
10697

10798
for (const entity of entities) {
10899
const id = selectIdValue(entity, selectId)
@@ -117,7 +108,7 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
117108
addManyMutably(added, state)
118109
}
119110

120-
function areArraysEqual(a: any[], b: any[]) {
111+
function areArraysEqual(a: unknown[], b: unknown[]) {
121112
if (a.length !== b.length) {
122113
return false
123114
}
@@ -131,16 +122,15 @@ export function createSortedStateAdapter<T>(selectId: any, sort: any): any {
131122
return true
132123
}
133124

134-
function merge(models: T[], state: R): void
135-
function merge(models: any[], state: any): void {
125+
function merge(models: T[], state: R): void {
136126
models.sort(sort)
137127

138128
// Insert/overwrite all new/updated
139129
models.forEach(model => {
140130
state.entities[selectId(model)] = model
141131
})
142132

143-
const allEntities = Object.values(state.entities)
133+
const allEntities = Object.values(state.entities) as T[]
144134
allEntities.sort(sort)
145135

146136
const newSortedIds = allEntities.map(selectId)

src/entities/state_adapter.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
import createNextState, { Draft, isDraft } from 'immer'
1+
import createNextState, { isDraft } from 'immer'
22
import { EntityState } from './models'
33
import { PayloadAction, isFSA } from '../createAction'
44

55
export function createStateOperator<V, R>(
66
mutator: (arg: R, state: EntityState<V>) => void
7-
): EntityState<V>
8-
export function createStateOperator<V, R>(
9-
mutator: (arg: any, state: any) => void
10-
): any {
7+
) {
118
return function operation<S extends EntityState<V>>(
12-
state: any,
9+
state: S,
1310
arg: R | PayloadAction<R>
1411
): S {
15-
const runMutator = (draft: Draft<EntityState<V>>) => {
16-
if (isFSA(arg)) {
12+
function isPayloadActionArgument(
13+
arg: R | PayloadAction<R>
14+
): arg is PayloadAction<R> {
15+
return isFSA(arg)
16+
}
17+
18+
const runMutator = (draft: EntityState<V>) => {
19+
if (isPayloadActionArgument(arg)) {
1720
mutator(arg.payload, draft)
1821
} else {
1922
mutator(arg, draft)

0 commit comments

Comments
 (0)