💁🏻‍♀️ 소개

TypeScript에서 타입 가드(Type Guard)는 특정 코드 영역에서 변수의 타입을 좁혀서 타입 안전성을 보장하는 기능입니다.
타입 가드를 사용하면 런타임에서 타입 검사를 수행하여 예상치 못한 오류를 방지할 수 있습니다.

❶ 타입 가드 기본 개념

타입 가드는 주로 사용자 정의 타입 가드 함수와 타입 가드를 제공하는 TypeScript 내장 키워드 두 가지 방법으로 구현할 수 있습니다.

사용자 정의 타입 가드 함수

사용자 정의 타입 가드 함수는 주로 is 키워드를 사용하여 특정 타입을 확인하는 함수를 작성합니다.

interface Bird {
    fly(): void;
    layEggs(): void;
}

interface Fish {
    swim(): void;
    layEggs(): void;
}

function isFish(pet: Bird | Fish): pet is Fish {
    return (pet as Fish).swim !== undefined;
}

위 예시에서 isFish 함수는 pet이 Fish 타입인지 확인하는 사용자 정의 타입 가드 함수입니다.
pet is Fish 반환 타입을 사용하여 타입 가드를 구현합니다.

❷ 타입 가드를 제공하는 TypeScript 내장 키워드

TypeScript에는 타입 가드 기능을 제공하는 내장 키워드가 있습니다.
대표적으로 typeof, instanceof 등이 있습니다.

typeof
변수의 타입을 검사할 때 사용합니다.
주로 기본 타입(string, number, boolean, symbol, undefined, object, function)을 확인하는 데 사용됩니다.

function padLeft(value: string, padding: string | number) {
    if (typeof padding === "number") {
        return Array(padding + 1).join(" ") + value;
    } else {
        return padding + value;
    }
}

instanceof
객체가 특정 클래스의 인스턴스인지 확인할 때 사용합니다.
주로 사용자 정의 클래스를 확인하는 데 사용됩니다.

class Car {
    start() {
        console.log("Car started");
    }
}

class Bicycle {
    start() {
        console.log("Bicycle started");
    }
}

function start(vehicle: Car | Bicycle) {
    if (vehicle instanceof Car) {
        vehicle.start();
    } else {
        vehicle.start();
    }
}

📝 총정리

타입 가드는 TypeScript에서 변수의 타입을 좁혀서 타입 안전성을 보장하는 기능입니다.
사용자 정의 타입 가드 함수와 TypeScript 내장 키워드를 사용하여 타입 가드를 구현할 수 있습니다.
타입 가드를 사용하면 다양한 타입 조합에 대한 안전한 코드 처리가 가능해지고, 각 타입의 동작에 맞는 로직을 구현할 수 있습니다.
이를 통해 런타임 시 발생할 수 있는 오류를 최소화하고, 코드의 안정성과 가독성을 높일 수 있습니다.

profile
#UXUI #코린이

0개의 댓글