首页 > 解决方案 > 如何为调用请求方法的 Window 对象以太坊编写打字稿接口

问题描述

我正在运行以下功能

import { ethers } from "ethers";


async function requestAccount() {
    await window.ethereum.request({ method: "eth_requestAccounts" });
  }

我遇到的问题是我正在使用打字稿,它抱怨以下错误

Property 'ethereum' does not exist on type 'Window & typeof globalThis'

所以我能够用以下方法修复它

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

但是我认为这并没有正确利用打字稿。我将如何编写它以使接口值正确。我认为它应该是一个内部带有方法的对象,但不确定如何在打字稿中编写它。

任何帮助将不胜感激。

谢谢

标签: javascripttypescriptethers.js

解决方案


我通过以下方式暂时解决了类型错误:

  • 添加: declare let window: any在您的导入之后的顶层。现在您可以window.ethereum在警告和类型错误关闭的情况下进行调用。

我认为这会用一种类型覆盖全局窗口对象,any我确信这不是解决此问题的最佳方法,有点像 hack,但同时修复了 Type 错误。让我知道这是否适用于您的情况。


推荐阅读