반응형
의존성 관리 : 타입 선언과 @types
package.json의 세가지 종류 의존성
- dependencies런타임에 필수적인 라이브러리들이며, npm을 통해 설치한다면 dependencies에 들어있는 라이브러리도 함께 설치됨 → 전이 의존성
- 현재 프로젝트를 실행하는데 필수적인 라이브러리
- devDependencies사용자가 해당 프로젝트를 설치하면 해당 라이브러리들은 제외됨 ⇒ typescript
- 현재 프로젝트를 개발하고 테스트하는데 사용되지만, 런타임에는 필요없는 라이브러리
- peerDependencies
- 런타임에 필요하긴 하지만, 의존성을 직접 관리하지 않는 라이브러리들 → 플러그인
프로젝트에서 공통적으로 고려해야 할 의존성 두가지
- ts자체 의존성
- ⇒ 팀원들이 모두 같은 버전을 사용해야함 → devDependencie에 들어가 있는 것이 좋음
- 타입 의존성 고려
- @types 스코프를 통해 npm의 타입정의를 얻을 수 있음 @types 의존성은 devDependencies에 있어야 함(구현체는 따로 dependencies에 있음)
npm install react
npm install --save-dev @types/react
타입 선언과 관련된 세가지 버전 이해하기
타입스크립트는 의존성 문제를 복잡하게 만들 수 있다.
고려해야 할 사항
- 라이브러리의 버전
- 타입 선언(@types)버전
- 타입스크립트의 버전
버전 오류 유형
- 라이브러리는 업데이트 했으나 타입선언은 업데이트 하지 않음타입선언의 버전이 준비되지 않은 경우, interface의 보강기법을 활용하여 프로젝트 자체에 추가
- ⇒ 해결책 : 타입선언도 업데이트 하여 라이브러리와 버전을 맞출 것.
- 라이브러리보다 타입선언의 버전이 쵯니인 경우
- 프로젝트 ts버전보다 라이브러리가 필요로 하는 ts버전이 최신인경우해결책 : 버전별 타입정보설치, ts버전업, 라이브러리 타입선언 버전 다운, declare module로 타입정보 제거
- ⇒ 라이브러리에 필요한 ts버전이 더 높은 경우, types선언 자체에서 타입 오류가 발생하게 됨
- @types 의존성이 중복되는 경우
- 전역 네임스페이스에 있는 타입선언 모듈이라면, 타입선언이 중복되어 오류가 발생하게도미 ⇒
npm ls @types/라이브러리
를 실행하여 타입선언 중복을 추적할 수 있음
반응형