블록체인/Ethers & web3
ethers & typechain 사용해서 타입 정의하기
체인의정석
2023. 7. 20. 16:09
728x90
오랜기간 ethers와 typescipt를 사용했었는데 ethers의 타입을 지정하는 부분이 많이 어려웠었다.
지금까지 알게 된 내용들을 한번 정리해 보려고 한다.
1. 컨트렉트 객체 생성 시에 타입 지정해 버리기
import { NonfungiblePositionManager } from '../typechain/NonfungiblePositionManager';
const nonfungiblePositionManager = await ethers.getContractAt("NonfungiblePositionManager", contractAddressNftManager, signer) as NonfungiblePositionManager;
위와 같은 형태로 typechain을 사용하면 여기서 기본적인 컨트렉트의 자료형이 나오게 된다.
따라서 컨트렉트 객체 생성 시에 타입을 지정해 주면 여기서 타입을 다 가져올 수 있다.
2. 타입을 가져오기 어려운 경우
타입을 가져오기 어려운 경우에는 타입체인에 직접 들어가서 ethers에서 가지고 있는 타입들을 직접 가지고 커스텀 타입을 정의해 두고 사용할 수 있다.
import { BigNumberish } from "ethers";
export type MintParams = {
token0: string;
token1: string;
fee: BigNumberish;
tickLower: BigNumberish;
tickUpper: BigNumberish;
amount0Desired: object;
amount1Desired: object;
amount0Min: BigNumberish;
amount1Min: BigNumberish;
recipient: string;
deadline: number;
}
이건 내가 만든 타입중 하나의 예시인데 BigNumberish라는 타입 또한타이핑에서 발견해서 사용중이다.
export declare type BigNumberish = BigNumber | Bytes | string | number;
이렇게 되면 bignumber류의 숫자가 리턴되는 경우 타입을 지정해주기 어려운데 이걸 그냥 가져와서 사용하면 된다.
728x90
반응형