[typescript] 리터럴 타입을 확인하는 타입 가드 함수 작성 방법

타입스크립트에서는 리터럴 타입을 사용하여 특정 값을 나타내는 타입을 지정할 수 있습니다. 하지만, 리터럴 타입을 가진 변수나 매개변수를 다룰 때 해당 값이 실제로 해당 리터럴 타입을 가지고 있는지를 확인해야 할 때가 있습니다. 이때, 타입 가드(Type Guard) 함수를 사용하여 해당 값이 올바른 타입을 가졌는지 확인할 수 있습니다.

아래는 문자열 리터럴 타입을 확인하는 타입 가드 함수를 작성하는 예제입니다. 우선, string 타입을 리터럴 타입으로 선언합니다.

type EventName = 'click' | 'hover' | 'scroll';

다음으로, 해당 리터럴 타입을 확인하는 타입 가드 함수를 작성합니다. 아래의 예제에서 isEventName 함수는 주어진 값이 EventName 타입에 속하는지를 확인하는 타입 가드 함수입니다.

function isEventName(eventName: string): eventName is EventName {
  return ['click', 'hover', 'scroll'].includes(eventName);
}

위의 isEventName 함수는 eventNameclick, hover, scroll 중 하나인지를 확인하여 그 결과로써 eventNameEventName 타입인지를 판단합니다. 함수 시그니처에서 eventName is EventName은 이 함수가 eventNameEventName 타입인지를 검사하는 타입 가드 함수임을 나타냅니다.

이제 해당 타입 가드 함수를 사용하여 변수나 매개변수의 값이 올바른 타입을 가졌는지를 확인할 수 있습니다.

function handleEvent(eventName: string) {
  if (isEventName(eventName)) {
    // eventName에 대한 타입이 EventName으로 결정됨
    console.log('Valid event name:', eventName);
  } else {
    console.log('Invalid event name:', eventName);
  }
}

위의 예제에서 handleEvent 함수에서 isEventName 함수를 사용하여 eventName의 타입을 확인하고, 이에 따라 올바른 처리를 수행하고 있습니다.

타입 가드 함수를 사용하여 리터럴 타입을 확인하면 코드의 안정성을 높이고 잠재적인 버그를 방지할 수 있습니다.

이렇게 타입 가드 함수를 활용하여 리터럴 타입을 확인하는 방법을 통해 타입 안정성을 높일 수 있습니다. 리터럴 타입을 다룰 때는 해당 값이 올바른 타입을 가졌는지를 확인하는 과정이 중요하며, 타입 가드 함수는 이러한 확인 작업을 보다 쉽고 안전하게 수행할 수 있도록 도와줍니다.

본 내용은 TypeScript 핸드북의 Advanced Types 섹션을 참고하여 작성되었습니다.