의존성 관리는 개발자에게 매운 힘든 일입니다. 그래서 개발자들은 단순히 외부 라이브러리를 프로젝트에 추가해서 사용할 뿐, 라이브러리의 전이적 의존성이 호환되는지 깊게 생각하지 않았을 겁니다.
그런데, 실제로 타입스크립트는 알아서 의존성 문제를 해결해주지 않고, 오히려 더 복잡하게 만든다고 합니다.
왜냐하면 타입스크립트를 사용하면 다음 세 가지 사항을 추가로 고려해야 하기 때문입니다.
* 라이브러리 버전
* 타입선언(@types)의 버전
* 타입스크립트의 버전
세 가지 버전 중 하나라도 맞지 않으면, 의존성과 상관없이 보이는 곳에서 엉뚱한 오류를 맞이하게 됩니다.
이렇게 발생한 오류의 원인을 파악하고 고치기 위해서는 타입스크립트 라이브러리 관리의 복잡한 메커니즘을 모두 이해해야 합니다.
타입스크립트에서 일반적으로 의존성을 사용하는 방식은 다음과 같습니다.
특정 라이브러리를 dependencies로 설치하고, 타입 정보는 devDependencies로 설치합니다.
npm install react
> react@16.8.6
npm install -D @types/react
> @types/react@16.8.19
위 쉘 명령어를 실행한 결과에 주목하시길 바랍니다. 메이저 버전과 마이너 버전은 일치하지만 빌드 버전이 상이합니다.
이와 같이 타입 선언과 모듈의 버전이 일치하지 않은 경우 엉뚱한 오류를 맞이할 가능성이 있을수 있습니다.
[요약]
* @types 의존성과 관련된 세가지 버전이 있습니다. 라이브러리 버전, @types 버전, 타입스크립트 버전입니다.
* 라이브러리를 업데이트하는 경우, 해당 @types 역시 업데이트를 해야합니다.
'IT' 카테고리의 다른 글
| Effective Typescript - 48 - API 주석에 TSDoc 사용하기 (0) | 2022.01.24 |
|---|---|
| Effective Typescript - 47 - 공개 API에 등장하는 모든 타입을 익스포트하기 (0) | 2022.01.24 |
| Effective Typescript - 45 - devDependencies에 typescript와 @types 추가하기 (0) | 2022.01.24 |
| Effective Typescript - 44 - 타입 커버리지를 추적하여 타입 안정성 유지하기 (0) | 2022.01.24 |
| Effective Typescript - 43 - 몽키 패치보다는 안전한 타입을 사용하기 (0) | 2022.01.24 |