[typescript] 타입 단언과 타입 가드를 사용하여 타입을 변환하는 방법

타입스크립트에서는 자바스크립트와 달리 정적 타입을 가지기 때문에 때때로 타입을 변환하거나 캐스팅해야 하는 상황이 발생합니다. 이때, 타입 단언(Type Assertion)과 타입 가드(Type Guard)를 사용하여 타입을 변환할 수 있습니다.

타입 단언(Type Assertion)

타입 단언은 컴파일러에게 “내가 정확히 알고 있으니 해당 타입으로 취급해” 라고 알려주는 것입니다. 다음은 타입 단언의 예시입니다.

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

위 예시에서 (someValue as string)은 someValue를 string 타입으로 취급하겠다는 의미입니다.

타입 가드(Type Guard)

타입 가드는 런타임에 특정 타입을 검사하여 해당하는 타입으로 변환하는 기능을 제공합니다. 주로 instanceoftypeof와 같은 연산자를 사용합니다. 다음은 타입 가드의 예시입니다.

function isNumber(x: any): x is number {
  return typeof x === "number";
}

function exampleGuard(value: string | number) {
  if (isNumber(value)) {
    return value * 2;
  }
  return value;
}

위 예시에서 x is number는 isNumber 함수가 number 타입으로 캐스팅할 수 있는지 검사하는 타입 가드입니다.

정리

타입 단언과 타입 가드를 사용하여 타입을 변환하는 방법을 알아보았습니다. 이를 통해 타입스크립트에서 안전하고 정확한 타입 변환을 할 수 있습니다.