본문 바로가기
강의 실습/한 입 크기로 잘라먹는 타입스크립트(TypeScript)

사용자 정의 타입 가드

by Jint 2024. 11. 4.

한 입 크기로 잘라먹는 타입스크립트 - 사용자 정의 타입 가드

1. 사용자 정의 타입 가드
- chapter4.ts

/**
 * 사용자 정의 타입 가드
 */
type Dog = {
    name: string;
    isBark: boolean;
};

type Cat = {
    name: string;
    isScratch: boolean;
};

type Animal = Dog | Cat;

// 사용자 정의 타입 가드
// 타입스크립트 직접 만든 함수의 반환값으로 타입을 잘 좁혀주지 않는다.
// 따라서 함수 자체를 타입 가드 역할을 하도록 만든다.
// 함수 반환값이 true 면, 인수로 전달한 animal 값이 Dog 타입으로 인지.
function isDog(animal: Animal): animal is Dog {
    // 타입 단언 후 검사
    return (animal as Dog).isBark !== undefined; // animal 타입이 좁혀지지 않으니 타입 단언 사용
}

function isCat(animal: Animal): animal is Cat {
    return (animal as Cat).isScratch !== undefined;
}

function warning(animal: Animal) {
    // if ('isBark' in animal) {
    if (isDog(animal)) {
        // 강아지
        animal; // Dog 타입으로 좁힘
    // } else if ('isScratch' in animal) {
    } else if (isCat(animal)) {
        // 고양이
        animal; // Cat 타입으로 좁힘
    }
}



참고링크 : https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8#

 

한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런

이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻‍♀️로 만들어드립니다., 프론

www.inflearn.com

댓글