typescript - 类型 '{ value: BigNumber; }' 的参数不可分配给类型 'Overrides & { from?: string | Promise<string> | undefined; }' 的参数

标签 typescript ethereum solidity smartcontracts ethers.js

我正在构建空间开发一个 Solidity 智能合约(版本 0.8.0),这是我在 TypeScript(4.5.x)/JavaScript 和节点 16.13.x 中的代码片段

...
const waveContractFactory = await hre.ethers.getContractFactory("WavePortal");
  const waveContract = await waveContractFactory.deploy({
    value: hre.ethers.utils.parseEther("0.1"),
});

...

上面的代码写在一个名为:run.ts的文件中,要执行该代码,命令如下: npx 安全帽运行脚本/run.ts

这是我得到的错误的头部,其尾部被截断:

error TS2345: Argument of type '{ value: BigNumber; }' is not assignable to parameter of type 'Overrides & { from?: string | Promise<string> | undefined; }'.
  Object literal may only specify known properties, and 'value' does not exist in type 'Overrides & { from?: string | Promise<string> | undefined; }'.

7     value: hre.ethers.utils.parseEther("0.1"),
....

上面的“7”显示发生错误的行。

我不知道错误从何而来。 run.ts/js

代码始终失败

我正在尝试用 0.1 以太币为我的智能合约提供资金。

这是我的智能合约的片段:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;

import "hardhat/console.sol";

contract WavePortal {
...
 constructor() {
    console.log("Hello, Multiverse... I am Smart Contract WavePortal");
  }
...
}

最佳答案

经过几个小时的研究,我找到了答案 here .

我必须向合约的构造函数添加一个 payable 修饰符,并且它可以工作:

contract WavePortal {
...
 constructor() payable {
    console.log("Hello, Multiverse... I am Smart Contract WavePortal");
  }
...
}

关于typescript - 类型 '{ value: BigNumber; }' 的参数不可分配给类型 'Overrides & { from?: string | Promise<string> | undefined; }' 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70203264/

相关文章:

javascript - 调用恢复异常

typescript - Typescript 可以强制执行类类型吗?

ethereum - Solidity 中的重入 hack 不再适用于 pragma ^0.8.0

javascript - 合约函数返回交易对象而不是 BOOL

solidity - 如何判断 RSK 上的智能合约是否为 NFT?

javascript - 使用 web3 ethereum 调用智能合约方法

generics - 有没有办法用 TypeScript 泛型进行传播操作?

reactjs - Emotion.js 与 create-react-app : ReferenceError: jsx is not defined

json - 在类中使用 RxJs Subject 时 JSON.stringify 上的循环对象异常

javascript - 从私有(private)以太坊区 block 链在浏览器中实时更新用户余额