Некоторые пакеты экспортируют только один объект. Если бы я перезаписал/расширил этот объект: как бы я это сделал?
После поиска множества ответов я нахожусь здесь:
import axios from "axios";
declare module "axios" {
const axios: {
not: () => void;
};
export = axios; // <- Exports and export assignments are not permitted in module augmentations.
}
axios.not();
Этот вопрос не о том, целесообразно ли здесь перезаписывать аксиомы.






TypeScript имеет возможности слияния объявлений, к сожалению, в вашем случае вы не сможете использовать его из-за его ограничений:
Запрещенные слияния Не все слияния разрешены в TypeScript. В настоящее время классы не могут объединяться с другими классами или с переменными. Информацию о том, как имитировать слияние классов, см. в разделе «Примеси в TypeScript».
Как говорится в документации, с другой стороны, вы можете использовать миксины для создания собственного класса, который расширяет Axios:
import { Axios } from "axios";
type AxiosConstructor = new (...args: any[]) => Axios;
function augmentAxios<T extends AxiosConstructor>(axios: T) {
return class AugmentedAxios extends axios {
newAbility() {}
};
}
const AugmentedAxios = augmentAxios(Axios);
const augmentedAxios = new AugmentedAxios({});
augmentedAxios.post('http://test'); // Base ability
augmentedAxios.newAbility(); // New ability