[typescript] 타입 가드와 타입 변환의 차이점

타입 가드와 타입 변환은 TypeScript에서 형식 안정성을 유지하고 코드를 더욱 안전하게 작성하는 데 도움을 주는 두 가지 중요한 개념입니다. 이들의 차이점을 이해함으로써 코드를 더욱 효율적으로 작성할 수 있습니다.

타입 가드 (Type Guards)

타입 가드는 런타임 시점에 객체의 타입을 확인하여 해당 객체를 특정 타입으로 간주할 수 있게 해주는 TypeScript의 기능입니다. 주로 typeof, instanceof, in, hasOwnProperty와 같은 연산자나 함수로 타입 가드를 구현할 수 있습니다.

예를 들어, 다음과 같이 instanceof를 사용하여 객체의 타입을 확인할 수 있습니다.

class Animal {
  sound() {
    console.log('Make some noise');
  }
}

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

function makeSound(animal: Animal) {
  if (animal instanceof Dog) {
    animal.bark();
  } else {
    animal.sound();
  }
}

타입 변환 (Type Casting)

타입 변환은 컴파일 시점에 TypeScript 컴파일러에게 특정 값이 특정 타입이라고 알려주는 것을 말합니다. 주로 as 키워드를 사용하여 타입 변환을 수행할 수 있습니다.

예를 들어, 다음과 같이 as 키워드를 사용하여 변수의 타입을 변환할 수 있습니다.

let myElement = document.getElementById('myInput') as HTMLInputElement;
myElement.value = 'Hello World';

결론

타입 가드는 런타임에 객체의 타입을 확인하여 안전하게 사용할 수 있도록 도와주고, 타입 변환은 컴파일러에게 특정 값이 어떤 타입이라고 알려주는 것입니다. 두 가지 개념을 적절하게 활용하여 TypeScript 코드를 작성하면 타입 안정성을 유지하고 가독성 있고 안전한 코드를 구축할 수 있습니다.

참조 링크: