[Effective TypeScript] 타입 선언과 @types (1)

이예슬·2022년 12월 19일
0

Effective TypeScript

목록 보기
15/15

Item45. devDependencies에 typescript와 @types 추가하기

  • dependencies 현재 프로젝트를 실행하는 데 필수적인 라이브러리들이 포함된다. 프로젝트의 런타입에 사용되는 라이브러리들은 dependencies에 포함된다. 프로젝트를 npm에 공개하여 다른 사용자가 해당 프로젝트를 설치한다면 dependencies에 들어있는 라이브러리도 함께 설치된다. 이러한 현상을 전이 의존성이라고 한다.
  • devDependencies 현재 프로젝트를 개발하고 테스트하는 데 사용되지만 런타임에는 필요없는 라이브러리들이 포함된다. 프로젝트를 npm에 공개하여 다른 사용자가 해당 프로젝트를 설치한다면 devDependencies에 포함된 라이브러리들은 제외된다.
  • peerDependencies 런타임에 필요하긴 하지만 의존성을 직접 관리하지 않는 라이브러리들이 포함된다. 단적인 예로 플러그인들 들 수 있다.

타입스크립트와 관련된 라이브러리는 일반적으로 devDependencies에 속한다.

타입스크립트는 시스템 레벨로 설치하기보다는 devDependencies에 넣는 것이 좋다. 그래야 프로젝트를 사용하는 모두가 항상 정확한 버전의 타입스크립트를 설치할 수 있기 때문이다.

@types 의존성은 dependencies가 아니라 devDependencies에 포함시켜야 한다. 런타임에 @types가 필요한 경우라면 별도의 작업이 필요할 수 있다.

Item46. 타입 선언과 관련된 세 가지 버전 이해하기

타입스크립트를 사용하면 다음 세 가지 사항을 추가로 고려해야 한다.

  • 라이브러리의 버전
  • 타입 선언(@types)의 버전
  • 타입스크립트의 버전

세 가지 버전 중 하나라도 맞지 않으면 의존성과 상관없어 보이는 곳에서 예상치 못한 오류가 발생할 수 있다. 타입스크립트에서 일반적으로 의존성을 사용하는 방식은 특정 라이브러리를 devdependencies로 설치하고 타입 정보는 devDependencies로 설치하는 방식이다.

라이브러리를 업데이트 하는 경우 해당 @types 역시 업데이트해야 한다.

타입 선언을 라이브러리에 포함하는 것과 DefinitelyTyped에 공개하는 것 사이의 장단점을 이해해야 한다. 타입스크립트로 작성된 라이브러리라면 타입 선언을 자체적으로 포함하고 자바스크립트로 작성된 라이브러리라면 타입 선언을 DefinitelyTyped에 공개하는 것이 좋다.


<이펙티브 타입스크립트> Dan Vanderkam, 프로그래밍 인사이트 (2021)

profile
꾸준히 열심히!

0개의 댓글