[TS] 타입 확정 Narrowing & Assertion

phoenix·2021년 10월 11일
0

Narrowing & Assertion

Narrowing은 타입을 하나로 정한다라는 느낌이다 narrowing it down

Union Type등으로 변수의 타입이 불확실하다면 narrowing을 해준다

Narrowing

function 내함수(x :number|string){
  if(typeof x === 'string'){
     return x +'1'
     } else {
       return x + 1
     }
}

//narrowing을 할때 if문을 썼으면 else나 else if문을 써서 끝까지 써야 안전하다
//아니면 에러가 날 수도 있음

Assertion

function 내함수(x :number|string){
  let array :number[] = [];
  array[0] = x as number;
}
내함수(123);
/// as number의 기능으로 x는 number type으로 변환된다

as 문법은 막 남발해서 쓰면 안된다 as 문법은 Union Type을 하나로 확정 시킬때 써야한다.

as 문법은 내가 어떤 타입이 들어올지 확실히 알때 사용해야 한다.

function 내함수(x :number|string){
  let array :number[] = [];
  array[0] = x as number;
}
내함수('123');
/// as 문법을 사용하여 x를 숫자형으로 해놨지만 '123' 문자열이 들어와는 버그를 캐치를 하지 못한다
profile
phoenix

0개의 댓글