user-defined type guard (feat: is)

YOUNGJOO-YOON·2022년 2월 21일
0

typeScript

목록 보기
57/65
function isString(a:unknown):boolean{
    return typeof a === 'string';
}
function parseInput(input:string|number){
    let string:string;
    if(isString(input)){
        // string = input.toUpperCase(); error!
    }
}

위 코드는 에러가 발생한다. isString이 boolean을 준다는 것을 parseInput 함수는 알 지 못한다.

isString 함수 내에서만 작동하는 것이다. 따라서 isString 함수는 boolean을 반환하는 것을 알려주지만 typeguard로써의 역할을 완벽하게 해내지 못했다!


function isString(a:unknown):a is string{
    return typeof a === 'string';
}
function parseInput(input:string|number){
    let string:string;
    if(isString(input)){
        string = input.toUpperCase(); 
    }
}

is는 매개변수 타입을 정제하고 boolean을 반환하는 함수에 사용자 정의 타입 안전장치를 이용 함수가 해당 타입을 반환한다고 보장 하도록 할 수 있다.

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글