[javascript] 타입 에러 핸들링 방법

자바스크립트는 동적 타입 언어이기 때문에 데이터의 타입이 자유롭게 변환될 수 있습니다. 하지만 때로는 잘못된 타입으로 인해 발생하는 에러를 처리해야 할 때도 있습니다. 이번 포스트에서는 자바스크립트에서 발생하는 타입 에러를 핸들링하는 몇 가지 방법을 알아보겠습니다.

1. 타입 체크하기

타입 에러를 핸들링하기 위해서는 먼저 올바른 타입인지 체크해야 합니다. 이를 위해 typeof 연산자를 사용할 수 있습니다. typeof 연산자는 피연산자의 타입을 문자열로 반환합니다.

function add(a, b) {
  if (typeof a !== 'number' || typeof b !== 'number') {
    throw new TypeError('인자는 숫자 타입이어야 합니다.');
  }

  return a + b;
}

console.log(add(2, 3)); // 5
console.log(add('2', 3)); // 타입 에러 발생

위의 예시에서 add 함수는 두 개의 숫자 인자를 받아 더한 값을 반환합니다. 함수가 호출될 때, 먼저 인자의 타입을 체크하여 숫자 타입이 아닌 경우 TypeError를 던집니다.

2. 타입 변환하기

때로는 타입을 변환하여 에러를 피할 수도 있습니다. 자바스크립트에서는 타입 변환을 위해 parseInt, parseFloat 등의 내장 함수를 제공합니다.

function multiply(a, b) {
  a = Number(a);
  b = Number(b);

  if (isNaN(a) || isNaN(b)) {
    throw new TypeError('인자는 숫자 타입이어야 합니다.');
  }

  return a * b;
}

console.log(multiply(2, 3)); // 6
console.log(multiply('2', 3)); // 6
console.log(multiply('Hello', 3)); // 타입 에러 발생

위의 예시에서 multiply 함수는 두 개의 인자를 곱한 값을 반환합니다. 함수 내부에서 인자를 Number 함수를 사용하여 숫자 타입으로 변환하고, isNaN 함수를 사용하여 변환된 값이 유효한 숫자인지 체크합니다.

3. 타입 검증 라이브러리 사용하기

더욱 많은 유연성과 안정성을 원한다면 타입 검증 라이브러리를 사용하는 것이 좋습니다. 자바스크립트에서는 다양한 타입 검증 라이브러리를 제공하며, 가장 유명한 것은 Joi입니다.

const Joi = require('joi');

function divide(a, b) {
  const schema = Joi.object({
    a: Joi.number().required(),
    b: Joi.number().required()
  });

  const { error } = schema.validate({ a, b });

  if (error) {
    throw new Error('올바른 숫자 인자가 필요합니다.');
  }

  return a / b;
}

console.log(divide(6, 2)); // 3
console.log(divide(6, '2')); // 타입 에러 발생

위의 예시에서 divide 함수는 두 개의 인자를 나눈 값을 반환합니다. Joi를 사용하여 인자의 타입을 검증하고 유효성 검사를 수행합니다. 만약 유효하지 않은 값이 전달되면 Error를 던집니다.

결론

자바스크립트에서 타입 에러를 핸들링하는 방법에 대해 알아보았습니다. 올바른 타입 체크, 타입 변환, 타입 검증 라이브러리 사용 등을 통해 타입 에러를 방지하고 안정성을 높일 수 있습니다. 적절한 방법을 선택하여 코드에서 발생할 수 있는 타입 에러를 처리하는 것이 중요합니다.