체인의정석

ethers에 typescript 제대로 적용해보기 본문

블록체인/Ethers & web3

ethers에 typescript 제대로 적용해보기

체인의정석 2023. 1. 6. 17:33
728x90
반응형

https://tech.elysia.land/hardhat%EA%B3%BC-typechain%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8-%EA%B0%9C%EB%B0%9C-d7e8fc66d1d2

 

hardhat과 typechain을 사용한 컨트랙트 개발

많은 dApp 프로젝트는 Truffle을 사용한다. Elysia에서도 기존의 스마트 컨트랙트 개발을 Truffle로 진행했다. Truffle은 solidity를 비롯한 블록체인 개발에 있어서 테스트 환경 구축, 배포 등 다양한 기능

tech.elysia.land

1. 타입스크립트를 사용하면 테스트 코드에서 타입을 가져와서 사용할 수 있다.

 

2. ethers에서 함수를 사용할때 그동안 any를 사용했었다. 근데 여기에 대한 타입은 어디서 가져올까?

eturn ethers.provider.getTransactionReceipt(tx)

예를들어 이렇게 Transaction 영수증을 가져오는 부분이 있다고 쳐보자

https://docs.ethers.org/v5/api/providers/types/#providers-TransactionReceipt

 

Types

Documentation for ethers, a complete, tiny and simple Ethereum library.

docs.ethers.org

provider.getTransactionReceipt( hash ) ⇒ Promise< TransactionReceipt >

타입을 any로 둘게 아니라 내가 사용한 모듈의 타입을 가져와서 지정해 주어야 하는 것이였다.

다음부터 any로 만들지 말고 공식 문서를 잘 찾고 거기에 해당하는 타입을 잘 잡아주어야겠다.

 

3. 다시 잘 살펴보니 ethers ts 모듈을 다운 받으면 이미 타입은 다 정의되어 있었다. 또한 2번에 설명한 타입들에 맞는 형태라면 any를 쓰지 않아도 오류가 나지 않았었다.

 

만약 명시적으로 타입을 지정해주어야 한다면 해당 모듈에 직접 들어가서 위치를 찾아서 가져오면 명시적인 타입 지정이 되지만 제대로 된 타입일 경우 내부적으로 이미 타입이 지정되고 검사까지 되므로 any를 쓸 필요가 없었다.

 

따라서 타입을 명시적으로 지정해야 하는 경우는 테스트 코드 또는 타입체인을 써서 이미 배포된 컨트렉트에 쉽게 테스트를 하려는 경우에 해당된다.

728x90
반응형
Comments