Я работаю над обновлением проекта до последней версии ReSwift и столкнулся с проблемой при написании пользовательского промежуточного программного обеспечения. Мне известно, что библиотека обеспечивает перегрузку dispatch
, которая принимает аргумент callback
. Я пытаюсь изменить значение по умолчанию DispatchFunction
с того, которое возвращает Void
, на то, которое возвращает Any
. Для справки, я также использую ReSwiftThunk, я написал следующее Middleware, которое использует CustomDispatchFunction
типа (Action)->Any
.
public typealias CustomDispatchFunction = (Action) -> Any
public typealias CustomMiddleware<State> = (@escaping CustomDispatchFunction, @escaping () -> State?)
-> (@escaping CustomDispatchFunction) -> CustomDispatchFunction
public func createCustomThunkMiddleware<State>() -> CustomMiddleware<State> {
return { dispatch, getState in
return { next in
return { action in
switch action {
case let thunk as CustomThunk<State>:
return thunk.body(dispatch, getState)
default:
return next(action)
}
}
}
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что при передаче этогоПромежуточное программное обеспечение и создание хранилища в моем клиентском приложении ниже, есть несоответствие типов.
mainStore = Store<AppState>(
reducer: appReducer,
state: AppState(),
middleware: [createCustomThunkMiddleware()]
)
Мой вопрос заключается в том, как изменить ожидаемый тип массива промежуточного программного обеспечения, чтобы обеспечить Any
возвращаемые типы в промежуточном программном обеспечении. и не только Void
.