[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]
는 해당 함수가 배열의 첫 번째 요소가 숫자인지를 확인하여 true
나 false
를 반환한다는 것을 의미합니다.
타입 가드를 사용하여 타입스크립트 코드를 유연하게 변환하고, 타입 안정성을 확보할 수 있습니다. 만약 여러분이 다른 언어에서 타입 가드를 사용해보지 않았다면, 타입스크립트의 타입 가드를 통해 코딩 경험을 더욱 향상시킬 수 있을 것입니다.
이상으로 타입스크립트에서의 타입 가드 변환 방식에 대해 알아보았습니다. 추가 질문이 있으시다면 언제든지 물어봐주세요!