淘先锋技术网

首页 1 2 3 4 5 6 7

介绍
启用 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 : [email protected]