[typescript] 타입스크립트에서의 타입 가드 변환 방식

타입스크립트는 정적 타입을 지원하는 언어로, 코드 실행 전에 오류를 찾을 수 있도록 도와줍니다. 그리고 유연한 데이터 변환을 위해 타입 가드(Type Guard)를 사용할 수 있습니다. 타입 가드는 런타임에 인스턴스의 타입을 확인하여, 해당 타입에 맞게 코드를 변환하는 패턴입니다.

타입스크립트에서의 타입 가드 변환 방식에 대해 살펴보겠습니다.

typeof 타입 가드

typeof를 사용한 타입 가드는 변수의 타입을 확인하는 가장 간단한 방법 중 하나입니다. 다음은 typeof를 사용한 타입 가드의 예시입니다.

function printLength(value: string | string[]) {
  if (typeof value === 'string') {
    console.log(value.length); // value가 string인 경우 string 타입의 메서드를 사용할 수 있게 됩니다.
  } else {
    console.log(value.length); // value가 string[]인 경우 string[] 타입의 메서드를 사용할 수 있게 됩니다.
  }
}

instanceof 타입 가드

instanceof를 사용한 타입 가드는 객체의 인스턴스를 확인하여 해당 객체의 타입을 결정하는 방법입니다.

class Animal {
  move() {
    console.log('Moving...');
  }
}

class Dog extends Animal {
  bark() {
    console.log('Woof! Woof!');
  }
}

function makeSound(animal: Animal) {
  if (animal instanceof Dog) {
    animal.bark(); // animal이 Dog 타입이라면 bark() 메서드를 호출할 수 있게 됩니다.
  } else {
    animal.move(); // animal이 Animal 타입이라면 move() 메서드를 호출할 수 있게 됩니다.
  }
}

사용자 정의 타입 가드

사용자 정의 타입 가드는 사용자가 만든 조건을 통해 타입을 확인하는 방법입니다. 다음은 배열의 첫 번째 요소가 숫자인지를 확인하는 사용자 정의 타입 가드의 예시입니다.

function isFirstElementNumber(arr: any[]): arr is [number, ...any] {
  return typeof arr[0] === 'number';
}

위 코드에서 arr is [number, ...any]는 해당 함수가 배열의 첫 번째 요소가 숫자인지를 확인하여 truefalse를 반환한다는 것을 의미합니다.

타입 가드를 사용하여 타입스크립트 코드를 유연하게 변환하고, 타입 안정성을 확보할 수 있습니다. 만약 여러분이 다른 언어에서 타입 가드를 사용해보지 않았다면, 타입스크립트의 타입 가드를 통해 코딩 경험을 더욱 향상시킬 수 있을 것입니다.

이상으로 타입스크립트에서의 타입 가드 변환 방식에 대해 알아보았습니다. 추가 질문이 있으시다면 언제든지 물어봐주세요!