— введение
— Включение поддержки TypeScript
— Конфигурация TypeScript
— Написание тестов и скриптов на TypeScript
— Поддержка сопоставлений путей
— Оптимизация производительности
— Запуск тестов и скриптов напрямую с помощью ts-node
.
— hardhat Tutorials , hardhat 教程
— Контакт 联系方式
— введение
В этом руководстве мы рассмотрим шаги по созданию проекта Hardhat, работающего с TypeScript. Это означает, что вы можете писать конфигурацию, задачи, сценарии и тесты Hardhat на TypeScript.
Для общего обзора использования Hardhat обратитесь к руководству «Начало работы».
— Включение поддержки TypeScript
Hardhat автоматически включит поддержку TypeScript, если ваш файл конфигурации заканчивается на .ts
и написан на допустимом 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 внедряются в глобальную область видимости. При использовании TypeScript ничего не будет доступно в глобальной области видимости, и вам придется импортировать все явно, например, import { ethers } from "hardhat"
.
Полный пример написания тестов и скриптов на TypeScript приведен в руководстве «Начало работы и создание проекта TypeScript».
Если вы хотите, чтобы Hardhat генерировал типы для вашего смарт-контракта, вам следует установить и использовать @typechain/hardhat
. Он генерирует файлы типов (*.d.ts
) на основе ABI и практически не требует настройки.
— Поддержка сопоставлений путей
Typescript позволяет определять пользовательские сопоставления путей с помощью опции конфигурации 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. По умолчанию он будет перекомпилировать и проверять типы при каждом запуске. В зависимости от размера вашего проекта, это может стать медленным.
Вы можете ускорить работу Hardhat, запретив ts-node
проверять тип вашего проекта. Это делается путем установки переменной окружения TS_NODE_TRANSPILE_ONLY
в значение 1
.
Например, вы можете быстрее запускать тесты на TypeScript следующим образом TS_NODE_TRANSPILE_ONLY=1 npx hardhat test
.
— Запуск тестов и скриптов напрямую с помощью ts-node
.
При запуске скриптов Hardhat без CLI необходимо использовать флаг ts-node
--files
.
Его также можно включить с помощью TS_NODE_FILES=true
.
— 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
— Контакт 联系方式
Домашняя страница : 565.ee
GitHub : github.com/565ee
Электронная почта : 565.eee@gmail.com
Facebook : facebook.com/565.ee
Twitter : twitter.com/565_eee
Telegram : t.me/ee_565