[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 코드를 작성하면 타입 안정성을 유지하고 가독성 있고 안전한 코드를 구축할 수 있습니다.
참조 링크: