[typescript] 타입스크립트 타입 가드의 개념
타입스크립트에서 타입 가드는 런타임 시점에 변수의 타입을 더 정확하게 추론할 수 있도록 도와주는 개념입니다.
주로 typeof
, instanceof
, in
, is
와 같은 키워드를 사용하여 변수의 타입을 좁히는 데 사용됩니다.
typeof를 이용한 타입 가드
function doSomething(x: number | string) {
if (typeof x === 'string') {
// 여기서 x의 타입은 string으로 좁혀짐
console.log(x.substr(1));
} else {
// 여기서 x의 타입은 number로 좁혀짐
console.log(x.toFixed(2));
}
}
instanceof를 이용한 타입 가드
class Cat {
meow() {
console.log('Meow!');
}
}
class Dog {
bark() {
console.log('Woof!');
}
}
function doSomething(pet: Cat | Dog) {
if (pet instanceof Cat) {
// 여기서 pet의 타입은 Cat으로 좁혀짐
pet.meow();
} else {
// 여기서 pet의 타입은 Dog로 좁혀짐
pet.bark();
}
}
in을 이용한 타입 가드
interface Fish {
swim: () => void;
}
interface Bird {
fly: () => void;
}
function doSomething(pet: Fish | Bird) {
if ('swim' in pet) {
// 여기서 pet의 타입은 Fish로 좁혀짐
pet.swim();
} else {
// 여기서 pet의 타입은 Bird로 좁혀짐
pet.fly();
}
}
타입스크립트의 타입 가드를 활용하여 좀 더 안정적이고 정확한 코드를 작성할 수 있습니다.
이를 통해 런타임 시점에 오류를 줄이고 프로그램의 안정성을 높일 수 있습니다.
관련 참고 자료: 타입스크립트 핸드북 - 타입 가드