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

Я создал оболочку для популярной библиотеки http axios

В основном это просто патчи для обезьян функциональность get и post, чтобы сделать его прощечтобы наша команда отменила запросы на обещание, добавив токен отмены к каждому запросу.

Проблема

Когда я экспортирую этот модуль axios с "обезьяньими заплатками", VSCode не распознает наборопределено в axios.d.ts.

Что я делаю

Я экспортирую следующий объект-оболочку:

const wrapper = {
    /**
     * Cancels all current requests
     * @function
     * @returns {void}
     */
    cancelAll: cancelAll,
    get: (url, config) => {
        console.log('wrapped');

        return axios.get(url, withCancelToken(config));
    },

    post: (url, data, config) => {
        return axios.post(url, data, withCancelToken(config))
    },
    ...getAxiosModule() // note this line

}


// This function returns a new object that 
// contains all the original axios functions
// without get and post

const getAxiosModule = () => {
    return Object.keys(axios)
        .filter(key => !['get','post'].includes(key))
        .reduce((axiosModule,currentKey, index) =>{
            return Object.assign(axiosModule,{
                [currentKey]: axios[currentKey]
            })
        }, {});
}

Результат

VSCode невыведите исходные значения аксиос из этого нового объекта.No typings for patched module

Однако

Если изменить эту строку: ...getAxiosModule()

На:

...axios

All typings inferred

Видно, что набор текста выведен из исходного модуля axios.(Как и мой набор JSDoc для cancelAll)

Вопрос

Как я могу скопировать наборы из модуля axios в мой пользовательский модуль-обертку?

...