javascript - 如何为调用请求方法的 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
}
}
但是我认为这并没有正确利用打字稿。我将如何编写它以使接口值正确。我认为它应该是一个内部带有方法的对象,但不确定如何在打字稿中编写它。
任何帮助将不胜感激。
谢谢
解决方案
我通过以下方式暂时解决了类型错误:
- 添加:
declare let window: any
在您的导入之后的顶层。现在您可以window.ethereum
在警告和类型错误关闭的情况下进行调用。
我认为这会用一种类型覆盖全局窗口对象,any
我确信这不是解决此问题的最佳方法,有点像 hack,但同时修复了 Type 错误。让我知道这是否适用于您的情况。
推荐阅读
- visualization - MiniZinc 中的灰色方块代表什么?
- python - 将 dm 发送给用户 discord.py 时出错
- javascript - 为什么这是一个无效的日期?
- bing - Bing Ads 刷新令牌 - 不会自动刷新
- spring-el - 在自定义注释中使用拼写时,inteliJ idea 不自动提示方法
- python - 在循环内并行化循环时,有没有办法解决“比较递归深度范围”?
- java - 由于 java.lang.NoClassDefFoundError: jdk/internal/reflect/GeneratedSerializationConstructorAccessor1 无法运行 gradle 测试任务
- docker - Docker Moodle localhost 不工作(CentOS)
- python - 用 ursina 进行左 clic 检测
- c# - 启用了可为空引用类型的 C# 事件 - 如何声明?