728x90
목차
1. "타입 가드"란?
2. 타입 가드의 필요성
3. 타입 가드의 사용 예시
- typeof를 활용한 타입 가드
- instanceof를 활용한 타입 가드
- in을 활용한 타입 가드
2. 타입 가드의 필요성
3. 타입 가드의 사용 예시
- typeof를 활용한 타입 가드
- instanceof를 활용한 타입 가드
- in을 활용한 타입 가드
타입스크립트의 타입 가드에 대해서 알아보자!
1. "타입 가드"란?
타입 가드란 여러 개의 타입 중 원하는 타입으로 타입을 좁히는 역할을 하는 함수나 조건문으로, 특정 조건을 만족할 때 타입스크립트가 값의 타입을 명확하게 추론할 수 있도록 돕는다. 이를 통해 코드 내에서 안전하게 타입에 따른 처리를 할 수 있다.
2. 타입 가드의 필요성
TypeScript는 컴파일 시점에서 타입을 체크하지만, 런타임에는 값의 타입을 정확하게 알 수 없을 때가 있다.
특히 유니온 타입이나 any 타입을 사용할 때, 코드의 흐름에 따라 타입을 확실하게 확인하고 그에 따라 동작을 다르게 처리해야 한다.
이때 타입 가드를 사용해 런타임에 안전하게 타입을 좁히고, 특정 타입에 대한 작업을 수행할 수 있다.
3. 타입 가드의 사용 예시
1) typeof를 활용한 타입 가드
typeof 연산자를 사용해 기본 타입을 체크하는 방법이다.
function printValue(value: string | number) {
if (typeof value === 'string') {
console.log("String value:", value.toUpperCase()); // 타입이 string일 때
} else {
console.log("Number value:", value.toFixed(2)); // 타입이 number일 때
}
}
위 코드에서 typeof 연산자를 사용하여 value가 문자열일 때와 숫자일 때 각각 다른 처리를 할 수 있다. 타입스크립트는 조건문 내부에서 타입을 자동으로 좁힌다.
2) instanceof를 활용한 타입 가드
instanceof는 클래스의 인스턴스 여부를 확인하는 데 사용된다.
class Dog {
bark() {
console.log("Woof!");
}
}
class Cat {
meow() {
console.log("Meow!");
}
}
function makeSound(animal: Dog | Cat) {
if (animal instanceof Dog) {
animal.bark(); // 타입이 Dog일 때
} else {
animal.meow(); // 타입이 Cat일 때
}
}
instanceof를 사용하면 클래스 인스턴스를 확인해 타입을 좁힐 수 있다.
3) in을 활용한 타입 가드
in 연산자는 객체에 특정 속성이 있는지를 확인하는 데 사용된다.
type Bird = { fly: () => void };
type Fish = { swim: () => void };
function move(animal: Bird | Fish) {
if ('fly' in animal) {
animal.fly(); // 타입이 Bird일 때
} else {
animal.swim(); // 타입이 Fish일 때
}
}
여기서는 in 연산자를 통해 객체에 fly 속성이 있는지를 확인해 타입을 좁히고 그에 맞는 메서드를 호출할 수 있다.
728x90
'Languages > TypeScript' 카테고리의 다른 글
[TypeScript] TypeScript 컴파일러(tsc)의 컴파일 과정 (2) | 2024.10.02 |
---|---|
[TypeScript] 타입 추론(Type Inference) (2) | 2024.10.01 |
[TypeScript] 타입 단언 (Type Assertion) (0) | 2024.09.30 |
[TypeScript] 타입 건전성 (Soundness ) (0) | 2024.09.29 |
[TypeScript] 제네릭 (Generics) (2) | 2024.09.28 |