[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();
    }
}

타입스크립트의 타입 가드를 활용하여 좀 더 안정적이고 정확한 코드를 작성할 수 있습니다.

이를 통해 런타임 시점에 오류를 줄이고 프로그램의 안정성을 높일 수 있습니다.

관련 참고 자료: 타입스크립트 핸드북 - 타입 가드