• 介绍
• 启用 TypeScript 支持
• TypeScript 配置
• 在 TypeScript 中编写测试和脚本
• 支持路径映射
• 性能优化
• 直接使用 ts-node
运行测试和脚本
• hardhat Tutorials , hardhat 教程
• Contact 联系方式
• 介绍
在本指南中,我们将逐步完成使用 TypeScript 的安全帽项目。这意味着您可以在 TypeScript 中编写您的安全帽配置、任务、脚本和测试。
有关使用 Hardhat 的一般概述,请参阅 入门指南。
• 启用 TypeScript 支持
如果您的配置文件以 .ts
结尾并且使用有效的 TypeScript 编写,Hardhat 将自动启用其 TypeScript 支持。这需要进行一些更改才能正常工作。
安装依赖
Hardhat 在后台使用 TypeScript 和 ts-node
,因此您需要安装它们。为此,请打开您的终端,转到您的 Hardhat 项目,然后运行:
npm install --save-dev ts-node typescript
为了能够在 TypeScript 中编写测试,你还需要这些包:
npm install --save-dev chai @types/node @types/mocha @types/chai
• TypeScript 配置
您可以轻松地将 JavaScript Hardhat 配置文件转换为 TypeScript 配置文件。让我们从一个新的 Hardhat 项目开始看看这是如何完成的。
打开您的终端,转到一个空文件夹,运行“npx hardhat”,然后完成创建 JavaScript 项目的步骤。完成后,您的项目目录应如下所示:
$ ls -l
total 1200
drwxr-xr-x 3 pato wheel 96 Oct 20 12:50 contracts/
-rw-r--r-- 1 pato wheel 567 Oct 20 12:50 hardhat.config.js
drwxr-xr-x 434 pato wheel 13888 Oct 20 12:52 node_modules/
-rw-r--r-- 1 pato wheel 604835 Oct 20 12:52 package-lock.json
-rw-r--r-- 1 pato wheel 460 Oct 20 12:52 package.json
drwxr-xr-x 3 pato wheel 96 Oct 20 12:50 scripts/
drwxr-xr-x 3 pato wheel 96 Oct 20 12:50 test/
然后,您应该按照上面 安装依赖项 部分中提到的步骤进行操作。
现在,我们要将配置文件从 hardhat.config.js
重命名为 hardhat.config.ts
,只需运行:
mv hardhat.config.js hardhat.config.ts
我们需要对您的配置进行一次更改以使其与 TypeScript 一起使用:您必须使用 import
/export
而不是 require
/module.exports
。
通过使用 TypeScript,您还可以键入您的配置,这将使您免于拼写错误和其他错误。
例如,示例项目的配置是这样的:
<<< @/…/packages/hardhat-core/sample-projects/javascript/hardhat.config.js{1,4}
进入这个:
<<< @/…/packages/hardhat-core/sample-projects/typescript/hardhat.config.ts{1,2,4,8}
最后,您需要创建一个 tsconfig.json
文件。这是我们推荐的一个:
<<< @/…/packages/hardhat-core/sample-projects/typescript/tsconfig.json
这就是真正需要的。现在您可以在 TypeScript 中编写配置、测试、任务和脚本。
• 在 TypeScript 中编写测试和脚本
使用 JavaScript 时,Hardhat Runtime Environment 中的所有属性都被注入到全局作用域中。使用 TypeScript 时,全局范围内没有任何可用的内容,您需要使用例如 import { ethers } from "hardhat"
显式导入所有内容。
按照 入门指南 创建一个 TypeScript 项目,以获取有关如何使用 TypeScript 编写测试和脚本的完整示例。
如果您希望 Hardhat 为您的智能合约生成类型,您应该安装并使用 @typechain/hardhat
。它基于 ABI 生成打字文件(*.d.ts
),几乎不需要配置。
• 支持路径映射
Typescript 允许通过 paths
定义自定义 path mappings /tsconfig#paths) 配置选项:
{
compilerOptions: {
paths: { "~/*": ["src/*"] },
// ...Other compilerOptions
},
}
要在运行 Hardhat 测试或脚本时支持此选项,您需要安装包 tsconfig-paths
并将其注册到您的 hardhat.config .ts
:
import { HardhatUserConfig } from "hardhat/config";
// This adds support for typescript paths mappings
import "tsconfig-paths/register";
const config: HardhatUserConfig = {
// Your type-safe config goes here
};
export default config;
• 性能优化
在底层,Hardhat 使用 ts-node 来支持 TypeScript。默认情况下,它会在每次运行时重新编译和类型检查所有内容。根据您项目的大小,这可能会变慢。
您可以通过阻止 ts-node
对项目进行类型检查来使 Hardhat 运行得更快。这是通过将 TS_NODE_TRANSPILE_ONLY
环境变量设置为 1
来完成的。
例如,您可以更快地运行基于 TypeScript 的测试,例如 TS_NODE_TRANSPILE_ONLY=1 npx hardhat test
。
• 直接使用 ts-node
运行测试和脚本
在没有 CLI 的情况下运行 Hardhat 脚本时,需要使用 ts-node
的 [--files
标志](https://www.npmjs.com/package/ts-node#help-my-types-缺失)。
这也可以通过 TS_NODE_FILES=true
启用。
【安全帽运行环境】:…/advanced/hardhat-runtime-environment.md
• hardhat Tutorials , hardhat 教程
CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN
• Contact 联系方式
Homepage : 565.ee
微信公众号 : wx468116118
微信 QQ : 468116118
GitHub : github.com/565ee
CSDN : blog.csdn.net/wx468116118
Email : 468116118@qq.com