Narrowing & Assertion

김범주·2022년 7월 12일
0

typescript

목록 보기
2/23
post-thumbnail

Narrowing

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

x가 어떤 타입인지에 따라 다르게 작동하도록 짜야함!
파라미터 부분의 x :number | string 은 그 자체가 하나의 union type 이므로 이를 그대로 사용할 수는 없음

Assertion

function 내함수(x :number | string){ 
    return (x as number) + 1 
}
console.log( 내함수(123) )

as를 통해 union type 같은 복잡한 타입을 하나의 정확한 타입으로 줄이는 역할을 수행함
실제로 타입을 바꾸는 것이 아니라 그 위치에서만 주장한 타입으로 인식되도록 타입스크립트 컴파일러를 속이는 것!

이럴 때 씁시다

  1. 왜 타입에러가 나는지 정말 모르겠는 상황에 임시로 에러해결용으로 사용하거나
  2. 내가 어떤 타입이 들어올지 정말 확실하게 알고 있는데 컴파일러 에러가 방해할 때
profile
개발꿈나무

0개의 댓글