[TypeScript] @Type 이란,

Song·2021년 7월 15일
0

@Type 이란?

npm에서 모듈을 가져올 때 아래와 같은 시나리오가 존재하는데,
이 때 @Type은 3,4번째에 해당이 된다고 볼 수 있다.

  • TS의 어떤 타입도 사용할 수 없는 라이브러리
  • TS 타입과 함께 컴파일러가 제공되는 라이브러리
  • TS 타입으로 정의되어있지 않지만 별도로 설치 가능한 라이브러리
  • TS 타입이 이미 내장되어 있어 자동으로 import 되는 라이브러리

왜 @Type같은 라이브러리가 필요할까?

npm에서 받을 수 있는 3rd party 모듈들은 대부분 js로 작성되어있다.
이러한 모듈들을 TS 프로젝트에 import할 시 TS Complier가 type 정보 없이 모듈의 구성이나 동작 방식을 이해할 수 없기 때문에 에러를 뱉는다.

그러므로 Complier가 제대로 작동될 수 있도록 TS 타입이 정의되어있는 모듈을 불러오는 것이 중요하다.

※ 보통 JWT, express같이 자주 쓰이는 라이브러리는 @Type 모듈도 같이 제공하지만
그렇지않은 것들도 있기 때문에 개발자가 직접 개발해야할 때도 있다.


@Type은 어떻게 동작할까?

*.d.ts 파일에서 경로를 지정하여 Compiler가 @Type 모듈을 탐색할 수 있도록 한다.
기본적으로 node_modules/@types 로 설정되어 있으며 tsconfig.js 를 통해 경로 변경이 가능하다.


설치 시 신경써야할 점

@Type 모듈은 유용하게 쓰이기도 하지만 아래와 같은 경우에는 정의된 type 자료형들이 동작이 안될때가 있다.

  1. Complie이 된 JS 버전과 @type 모듈에서 제공하는 버전의 호환성에 문제가 있는 경우
  2. 프로젝트에 이미 유사한 type이 사용되고 있는 경우
    • 만약 내가 프로젝트에서 사용하고 있는 타입과 module를 통해 적용된 타입이 다른 버전를 사용하고 있다면 'duplicate type definiation error'가 발생. (이 때, @type를 통해 설치한 모듈을 uninstall 하면서 해결할 수 있다.)


출처
Dev Store - Type Definition
Angular University - TS Typings

profile
Learn From Yesterday, Live Today, Hope for Tomorrow

0개의 댓글