Как перегрузить метод отправки по умолчанию для возврата Any в ReSwift и ReswiftThunk - PullRequest
0 голосов
/ 03 октября 2019

Я работаю над обновлением проекта до последней версии 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...