Как изменить объявление глобального типа на уже объявленный тип с помощью пакета NPM?

#typescript #ethereum

Вопрос:

Я установил @walletconnect/web3-провайдер»: «^1.6.6». В node_modules/walletlink/dist/index.d.ts этот пакет описывает глобальное окно.тип эфириума:

 import { WalletLinkProvider } from "./provider/WalletLinkProvider"; import { WalletLink } from "./WalletLink"; export { WalletLinkProvider } from "./provider/WalletLinkProvider"; export { WalletLink } from "./WalletLink"; export default WalletLink;  declare global {  interface Window {  WalletLink: typeof WalletLink;  WalletLinkProvider: typeof WalletLinkProvider;  ethereum?: WalletLinkProvider;  walletLinkExtension?: WalletLinkProvider;  } }   

Мне нужно добавить поле autoRefreshOnNetworkChange:

 window.ethereum.autoRefreshOnNetworkChange = false;  

Вопрос в том, как изменить окно.типа эфириума? Должен ли / могу ли я расширить WalletLink Provider для этого?

Это не работает:

 declare module 'walletlink' {  export class WalletLinkProvider {  autoRefreshOnNetworkChange: boolean  } }  

Это тоже не работает:

 declare module 'walletlink/dist/provider/WalletLinkProvider' {  export class WalletLinkProvider {  autoRefreshOnNetworkChange: boolean  } }  

Я всегда получаю ошибку:

TS2339: Свойство «autoRefreshOnNetworkChange» не существует для типа «WalletLink Provider».

Когда я пытаюсь как-то глобально измениться:

 declare global {  interface Window {  ethereum?: any  } }  

Я получаю:

TS2717: Последующие объявления свойств должны иметь один и тот же тип. Свойство «ethereum» должно иметь тип «WalletLink provider», но здесь имеет тип «любой». index.d.ts(10, 9): здесь также был объявлен «ethereum».