← Back to NOTES 🌰 ← Back to Effective TypeScript

← 아이템 45 - devDependencies에 typescript와 @types 추가하기

핵심 요약

@types 의존성과 관련된 세 가지 버전이 있다: 라이브러리 버전, @types 버전, 타입스크립트 버전. 라이브러리를 업데이트하는 경우, 해당 @types 역시 업데이트해야 한다. 타입 선언을 라이브러리에 포함하는 것과 DefinitelyTyped에 공개하는 것 사이의 장단점을 이해해야 한다. 타입스크립트로 작성된 라이브러리라면 타입 선언을 자체적으로 포함하고, 자바스크립트로 작성된 라이브러리라면 타입 선언을 DefinitelyTyped에 공개하는 것이 좋다.

자세한 내용

전이적(transitive) 의존성

정의: 집합 A에 대한 관계 R이 모든 a, b, c ∈ A에 대해 (a,b) ∈ R이고 (b,c) ∈ R일 때, (a,c) ∈ R이면 전이적 관계라 한다.

프로젝트 관점: 프로젝트가 B 라이브러리를 의존하고, B가 A와 C 라이브러리를 의존하면, 프로젝트도 A, C 라이브러리에 의존성을 갖게 된다.

타입스크립트의 버전 관리 복잡성

타입스크립트는 의존성 관리를 더 복잡하게 만든다. 다음 세 가지 버전을 추가로 고려해야 한다:

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

이 중 하나라도 맞지 않으면:

일반적인 의존성 사용 방식

# 라이브러리 설치
npm install react
# [email protected]

# 타입 정보 설치
npm install --save-dev @types/react
# @types/[email protected] ← 패치 버전이 다름 (.6과 .19)