Ref

타입가드 3가지

type Literal = "abc";
class TestClass {}

// 사용자 정의 타입가드 함수
function isLiteralAbc(arg: any): arg is Literal // 반환 형식에서 타입 가드 정의
{
    return (arg === "abc"); // 유효한 런타임 타입 가드 구현 (boolean 리턴해야 함)
}

//------------------------------------------------------------------------------
function _(arg: number | Literal | TestClass) {

    if (typeof arg === "number") {
        // [1] typeof 타입가드
    }
    else if (arg instanceof TestClass) {
        // [2] instanceof 타입가드
    }
    else if (isLiteralAbc(arg)) {
        // [3] 커스텀 타입가드
    }
}