타입스크립트 - Narrowing : typeof

REASON·2022년 9월 12일
0

타입스크립트

목록 보기
2/4
post-thumbnail

Narrowing

네로잉, 일명 타입 좁히기란 무엇일까?
유니온 타입처럼 여러 타입이 될 수 있는 경우 이 타입도, 저 타입도 확정이 되어 있지 않은 상태라고 볼 수 있다.
이때 타입을 하나로 확정 시켜주는 것을 Narrowing 이라고 칭한다.

typeof

타입을 좁힐 때 사용하는 방법 중 하나이다.
typeof 연산자를 사용해서 특정 타입일 때 로직을 실행하도록 조건을 주는 방법이 있다.

function fx(a : number | string){
  if(typeof a === 'number'){
    return a + 1;
  }else {
    return a + 1;
  }
}

함수의 파라미터로 number 또는 string 타입이 될 수 있는 a가 인수로 들어올 때 해당 타입에 따라서 리턴 값을 만들어 주었다.

function fx(a : number | string){
    return a + 1;
}

위 코드에서 if-else 조건문 없이 return a + 1만 있다면 타입 스크립트에서는 오류를 발생시킨다. 타입을 확실하게 지정해주어야 하기 때문이다.

이런 상황에서 typeof 연산자를 사용해서 타입을 좁혀주면 된다.

typeof 를 통해 알아낼 수 있는 기본 연산자는 string, number, bigint, boolean, symbole, undefined, obejct, function 이다.

문자열로 반환되므로 비교할 때 typeof a === 'number' 와 같은 형태로 비교해야 한다.

참고로 null은 typeof 연산자 사용시 'object' 가 반환된다.
null 타입은 tyepof를 사용하면 안되고 == 나 === 로 비교해야 한다.

console.log(typeof null) // object
/* null타입은 typeof 대신 */
let a = null;

if(a === null){
	//일치 연산자 사용
  console.log(a); // null
}
if(a == null){
	//비교 연산자 사용
  console.log(a); // null
}

그 외

객체에 특정 속성이 있는지 확인할 때 in을 사용하는 방법이라던가, 해당 클래스로 만든 인스턴스인지 확인하는 instanceof 도 네로잉 방법중 하나에 포함된다.


참고 자료
타입스크립트 Narrowing

0개의 댓글