체인의정석

ethers & typechain 사용해서 타입 정의하기 본문

블록체인/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
반응형
Comments