Я создал оболочку для популярной библиотеки 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 невыведите исходные значения аксиос из этого нового объекта.
Однако
Если изменить эту строку: ...getAxiosModule()
На:
...axios
Видно, что набор текста выведен из исходного модуля axios.(Как и мой набор JSDoc для cancelAll
)
Вопрос
Как я могу скопировать наборы из модуля axios в мой пользовательский модуль-обертку?