타입 확정하기

고재현·2023년 8월 6일
0

TypeScript

목록 보기
4/13
post-thumbnail

예를들어 함수에 타입을 지정했다고 가정해보자

function 함수(x:number | string){
  return x+1;
}

이러면 에러가 뜬다.

Operator '+' cannot be applied to types 'string | number' and 'number'

이유는 union type에는 일반적으로 조작을 못하게 막아놔서 그렇다.

그래서 타입을 확정짓기 위해서 쓰는 것이
Narrowing 과 Assertion 이다.

Type Narrowing

if 문으로 타입을 하나로 확정짓는 기능이다.

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

이렇게 if문으로 "~~일때 ~~해주세요" 라고 해주어야 한다.

Type Assertion

assert는 "이 변수의 타입을 ~~로 생각해주세요"
라고 해주는 것이다.

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

이렇게 as 를 써주면
"나는 이 변수를 number로 생각하기로 했어요" 가 된다.

  • as 키워드 사용시 특징
    1. as 키워드는 union type 같은 복잡한 타입을 하나의 정확한 타입으로 줄이는 역할

    2. 타입실드 임시 해제용. 실제 실행결과는 as 있을 때나 없을 때나 거의 동일하다.

assertion 을 쓰면 간편하지만, 정확하게 코딩을 하기 위해서는 narrowing을 쓰는 것이 좋다.

profile
잘못된 내용이 있다면 알려주세요..!

0개의 댓글