[Typescript] 자바스크립트엔 없고, 타입스크립트에만 있는 타입 3가지

xeptember·2022년 7월 6일
0
post-thumbnail

타입스크립트를 처음 접하던 당시 VSCode의 타입스크립트 에러 메세지가 타입스크립트 잼병인 나에게 아주 큰 도움이 되었는데, 줄곧 등장하는 3가지 타입의 정확한 의미와 사용처를 잘 모르겠는거다.

그 중 일반적으로 지정하지 않는 타입도 있다보니, 안쓰고 안찾아보고 걍 뭐 대충 그런거 같은데 자세히는 잘 모르는 중;; 이 되어버린 상태.. 게다가 최근에 NextJS를 익히던 중 TS를 사용하지 않았더니 내 마음 속 어딘가에 계속 남아있는 왠지 모를 찝찝함.. 타입스크립트 쓰고 싶다.. 첨부터 타입스크립트까지 같이 설치할걸 그랬다. 하는 생각이 드는거다!

사실 처음에 사용할 땐
(자바스크립트에 비해) 너무 깐깐한거 아니야? 자바스크립트는 이런거 눈 감아주잖아 😭
이 생각 진짜 오조오억번 했었다.

하지만 어느정도 습득이 되고나면 그의 명확함과 정확함이 나에게 심적으로 매우 편안함을 가져다준다. 깐깐하고 엄격한만큼 런타임 에러와 코드의 버그가 매우 많이 줄어든다는 것을 자연스럽게 느끼기 때문이다. 게다가 타입스크립트가 가지고 있는 가장 큰 특징인 불변성(Immutable)은 같은 특징을 가지고 있는 리액트와도 아주 찰떡궁합이다.

아무튼 서론이 너무 길었고, 기초부터 다시 탄탄히 해보자는 생각에 타입스크립트에 대해 조금 기본적인 내용을 공부해봤다.
그 중 내가 위에서 말한 타입스크립트만 가지고 있는 타입 3가지에 대하여 간단히 정리해본다.

unknown

  • const a: unknown 으로 지정한다면 이후에 함수를 실행할때 타입체크 조건문 (ex. if (typeof~)) 필요

void

  • 아무것도 return하지 않는 빈 함수 타입
  • 필수로 void 타입이라고 명시하지 않아도 됨 (타입스크립트에서 함수라면 기본적으로 타입이 void라고 인지한다)

never

  • 함수가 뭔가를 절대 return하지 않을때 오류 던지는 타입 (말이 조금 이상하지만.. 아래 예제 코드를 보면 이해 쌉가능)
function example(): never {
	throw new Error('error');
}

또는 never타입은 이렇게도 지정된다

function example(name: string | number) {
	if (typeof name === string) {
		... 
	} else if (typeof name === number) {
		... 
	} else { // typeof : never, 동작하지 않음
		... 
	}
}

위 코드에 대해 간단히 설명을 덧붙이자면

파라미터 타입을 string 또는 number로 지정을 했고, 조건문에서 typeof string인 경우와 typeof number인 경우에 대해 각각의 구문을 실행시켰다. example 함수 파라미터의 타입 종류는 2가지인데, 이 2가지로 각각의 조건문을 돌리고 나니 마지막 else 구문에선 더이상의 여지가 없다.
그래서 마지막 else 구문의 name은 타입이 never로 지정되며, 해당 구문은 동작하지 않는다.

profile
Front-end engineer

0개의 댓글