【发布时间】:2021-04-06 20:08:14
【问题描述】:
Web3.js web3 到 window 对象中。
像MetaMask 这样的浏览器钱包将ethereum 注入到window 对象中。
现在在打字稿中,为了减轻编译错误,我将按如下方式进行转换(window as any).ethereum
查看 Web3 存储库和 Wallet 存储库(例如 MetaMask)后,Window 对象没有可导入/可复制的打字稿定义/接口。
一个可能的解决方案是编写我自己的接口并扩展 Window,查看 Window 对象并尝试推断类型 - 不理想
其他使用过 web3.js 和 typescript 的开发者,您是如何解决 VSCode 中的 Window 类型界面问题和智能感知建议的?
【问题讨论】:
-
从技术上讲,
window.ethereum是由 MetaMask 或任何其他浏览器内钱包注入的。请注意,其他钱包没有有window.ethereum。 ethereum.stackexchange.com/questions/82531/… -
谢谢@MikkoOhtamaa 我假设最受欢迎和采用的钱包是将其注入浏览器的钱包。
-
您的假设不正确。只有浏览器插件钱包可以注入
ethereum,而且大部分钱包都是手机钱包。 -
@MikkoOhtamaa 我已更新问题以反映您的解释,感谢您的澄清。
-
@MikkoOhtamaa 抱歉,但我的问题不在于扩展
Window的接口,这在此处记录相对简单:stackoverflow.com/questions/12709074/… 我更感兴趣的是其他开发人员已经处理了 Web3.js 和 MetaMasks 缺少用于扩展窗口对象的类型的问题。我在 Web3.js 存储库中进行了挖掘,发现了一些类型,其中包括window.ethereum上可用的功能,因此这可能是一个不错的起点。
标签: typescript ethereum web3