[TS] Narrowing & Assertion

Chanki Hong·2023년 3월 31일
0

TypeScript

목록 보기
3/9
post-thumbnail

Narrowing & Assertion

  • string | number 같은 union type을 조작할 때,
function 내함수(x :number | string){
   return x + 1  // 에러 
}
  • 이러한 에러를 처리하는 법.

Type Narrowing

  • 조건문 등으로 타입에 따른 조건을 명시.
  • 타입이 불확실할 때의 부작용 최소화 장치.
  • Defensive coding(방어적인 코딩).
function 내함수(x: number | string) {
  if (typeof x === 'number') {
    return x + 1;
  } else if (typeof x === 'string') {
    return x + 1;
  } else {
    return 0;
  }
}

console.log(내함수(10)); // 11 출력
console.log(내함수('10')); // 101 출력
  • 조건문에서 else 문이 없을 때, 간혹 에러가 나기도 함. (엄격하게 쓰길 권장)

Type Assertion

  • '이 변수의 타입을 number로 생각해 주세요.'
  • 변수명 as number 등으로 지정.
function 내함수2(x: number | string) {
  return (x as number) + 1;
}

console.log(내함수2(10)); // 11 출력
console.log(내함수2('10')); // 101 출력
  • 사실, 타입 해제에 가까움.
  • 권장하지 않음.
  • 디버깅용 사용을 추천.

0개의 댓글