Типы распространения могут быть созданы только из типов объектов с использованием универсального типа - PullRequest
0 голосов
/ 18 октября 2018

Как я могу решить эту проблему, в то время как ActionCollection также является объектом

Исходный код:

type ActionHandler = (...args: any) => IPayloadAction<any>
type ActionCollection = { [key: string]: ActionHandler }

export const buildResourceFromRedux = <A extends ActionCollection, S>(name: string, reduxModule: IRedux<A, S>) => {
    return {
        redux: reduxModule,
        getResource: () => {
            const store = getStore(reduxModule.reducer, reduxModule.saga, { name })
            // Action
            const action = dispatchAction(reduxModule.action, store.dispatch) as A

            return {
                store,
                ...action,  ///////////////////////// Err here
                ...reduxModule,
            }
        },
    }
}

Данные, которые я называю этой функцией следующим образом

buildResourceFromRedux('aUnitName', {
    action: {
        query: () => ({
            type: 'QUERY',
        }),
        get: (id: string) => ({
            type: 'GET',
            payload: {
                id,
            }
        })
    },
    saga: watchSaga*() {...}
    reducer: (state, actions: Action<any>) => state
})

Iиспользую машинопись 3.1.2.

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