Type Guard


타입을 좁히기 위한 과정
타입을 검사할 때 유용한 것들



1. typeof 연산자

아래와 같이 작성해 type을 검사하고 처리하는 용도로 코드를 더 안전하게 작성할 수 있다.

function print(value: number | string): string {
    if (typeof value === 'number') {
        return String(value)
    }

    if (typeof value === 'string') {
        return value
    }

    return ''
}


2. in 연산자

해당 속성이 객체에 존재하면 true를 반환하는 연산자

interface Dog {
    name: string
    bark(): '멍멍'
}

interface Cat {
    name: string
    meow(): '냐옹'
}

function sayAnimal(animal: Dog | Cat) {
    if ('bark' in animal) {
        animal.bark()
        console.log(animal.name, animal.bark)
    }
    
    if ('meow' in animal) {
        animal.meow()
        console.log(animal.name, animal.meow)
    }
}


3. instanceof 연산자

해당 인스턴스가 대상에서 생성된 인스턴스일 경우 true 반환

// Date타입만 반환하기 위해 체크
function getDate(date: Date | string): Date {
    if (date instanceof Date) {
        return date
    }

    return new Date(date)
}


4. 사용자 정의 타입 가드

is~(매개변수): 매개변수 is 타입 { }

function isDate(date: Date | string): date is Date {
    return date instanceof Date
    // Date타입이면 true 반환, 아니면 false반환
}

function getDate(date: Date | string): Date {
    // 이렇게 사용가능
    if (isDate(date)) {
        return date
    }

    return new Date(date)
}
profile
⛅🛩️ 먼 길을 돌아서 온 프론트엔드 개발자 ✈️⛅

0개의 댓글