타입스크립트 기초3 - any, unknown, never, void

eeensu·2023년 7월 30일
0

typescript

목록 보기
5/22
post-thumbnail

any 의 특징

  • 어떤 타입이어도 상관없는 타입이지만 최대한 쓰지 않는 게 핵심이다. 컴파일 타임에 타입 체크가 정상적으로 이뤄지지 않을 수 있기 때문이다.

  • 컴파일 옵션 중에는 any를 써야 하는데 쓰지 않으면 오류를 리턴하는 옵션인 nolmplicitAny가 있다.

  • 타입 안전성은 ts를 사용하는 주요 동기 중 하나이며 필요하지 않은 경우에는 any를 사용하지 않도록 하는 것이 권장된다. 때문에 any의 편의는 안전성을 잃게 되는 대가로 온다는 것을 명심해야 한다.



unknown 의 특징

  • 컴파일러와 미래의 코드를 읽는 팀원에게 이 변수가 무엇이든 될 수 있음을 알려주는 타입을 제공하기를 원하므로 이럴 때 unknown 타입을 이용한다.

  • unknwon 타입을 사용하면 runtime error를 줄일 수 있다.

  • 데이터의 일부 유형의 검사를 수행해야 함을 알리는 API에 유용하다.

  • declare 키워드와 같이 사용할 수 있다. declare 키워드는 변수, 상수, 함수 또는 클래스가 이미 어딘가에 선언되어 있음을 의미하는 것이다. 즉, js 코드로 컴파일되지는 않고, ts 컴파일러에게 타입 정보를 알리기만 한다. declare로 선언한 것은 값이 할당되지 않아도 코딩할 수 있다.

  • unknown 타입을 사용할 때, 컴파일 전 타입을 확정시켜주지 않으면 다른 곳에 할당할 수 없고, 사용할 수도 없다.

  • if 조건문을 통해 해당 unknown 타입이 string을 가지는지, number를 가지는지 등에 대한 검사를 수행하고 타입을 좁혀가는 과정을 타입가드라고 한다.



never 의 특징

  • never 타입은 함수에서, 아무것도 리턴되지 않는다는 뜻이다. 즉, 함수의 바디가 끝나지 않아야 한다. 끝나지 않도록 하는 예시는 throw new Erorr 로 함수를 아예 다른 곳으로 보내거나 while(true){} 를 통해 무한 반복을 시켜주는 경우이다.

  • never 타입은 모든 타입의 서브타입이다. 하지만 never에는 그 어떤 것도 할당할 수 없다. any 조차도 never에 할당할 수 없다. 아래와 같이 잘못된 타입을 넣는 실수를 막고자 할 때 사용하기도 한다.


위 사진을 간단히 설명하자면, 특정 타입을 받는 T는 조건이 만족되지 않으면 never를 반환한다.이 예시에는 Generic, extends 등이 사용되고, 이후 포스트에서 다룬다.



void 의 특징

  • void는 어떤 타입을 가지지 않는 상태를 의미한다. 값은 없고 타입만 있어서 void라는 값을 쓸 수는 없다.

  • 일반적으로 어떤 변수에다 void 타입을 적용하지 않고, 값을 리턴하지 않는 함수에 적용한다. 일종의 undefined를 리턴하는 상태이다.

  • js를 제외하고는 다른 언어의 함수에서 void 라는 타입을 많이 사용한다. js에서는 undefined 라는 비슷한 타입이 있기 때문에 void 라 하는 타입을 가질 필요가 없었지만, 다른 언어에서도 잘 사용하기 때문에 의미상으로만 해두었다.

  • undefinedvoid 에 할당이 가능하다.

profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글