export const getTransactionStateWithTxHash: GetTransactionStateWithTxHash = (
txHash: string,
) =>
KStadiumInstance.get(`${SUB_URL}/transaction?txHash=${txHash}`).then(
(res) => res.data,
);
위 getTransactionStateWithTxHash
함수에서 만약, txHash
가 null인 경우에 대해 예외처리가 진행되게 하고 싶은 케이스이다.
따라서 코드를 아래와 같이 수정을 해야한다.
export const getTransactionStateWithTxHash: GetTransactionStateWithTxHash = (
txHash: string | null,
) => {
if (txHash === null) {
// txHash가 null인 경우에 예외 처리
throw new Error('txHash is null');
}
return KStadiumInstance.get(`${SUB_URL}/transaction?txHash=${txHash}`).then(
(res) => res.data,
);
};
호출하는 코드에서는 try-catch 블록을 사용하여 예외 처리할 수 있다.
try {
const result = await getTransactionStateWithTxHash(txHash);
// 성공한 경우의 로직
} catch (error) {
console.error('API 호출 중 에러 발생:', error.message);
// 에러 처리 로직
}
<aside>
💡 txHash 타입을 string으로 지정을 해놓았음에도 txHash타입이 null인 경우 실행된다.
함수 매개변수의 TypeScript 타입 어노테이션은 해당 매개변수가 어떤 타입이어야 하는지 정의하는 데 사용됩니다. 그러나 TypeScript는 이러한 어노테이션을 실행 시간(runtime)에 강제하지 않습니다. 따라서 TypeScript 타입 어노테이션은 코드의 가독성과 타입 검사를 위한 도구로 사용됩니다.
함수를 호출할 때 **txHash
**가 **null
**인 경우에 실행되는 것은 TypeScript가 아닌 JavaScript의 실행 동작 때문입니다. TypeScript는 컴파일 시간에 타입 체크를 수행하고 컴파일러 에러를 발생시키지만, 실행 시간에는 이러한 타입 정보가 사라집니다.
따라서 TypeScript로 **txHash
**의 타입을 **string
**으로 지정했더라도, 코드를 실행할 때 **txHash
**에 null
값을 전달하는 것은 JavaScript에서 허용되는 동작입니다. 이러한 경우에 대한 예외 처리나 유효성 검사는 개발자가 명시적으로 코드 내에 추가해야 합니다. 이를 위해 함수 내에서 **txHash
**가 **null
**인지 체크하고 예외 처리를 수행하거나 유효성 검사를 추가해야 합니다.
</aside>