Javascript & Typescript/이해하기

[TS] 타입스크립트(Typescript) 이해하기-2 (의존성 관리, @types)

adjh54 2022. 4. 17. 17:54
반응형

 

해당 글은 자바스크립트/타입 스크립트 내에서 의존성에 대해서 이해를 하고 상황에 따라 의존성을 설치해야 하는 이유에 대해 이해하고 관리하기 위한 방법과 관련된 글입니다.

1) 라이브러리 의존성 관리 

💡  Javascript 내에서 라이브러리의 의존성 관리를 위한 종류는 3가지로 나뉩니다.
종류 설명
dependencies 현재 프로젝트를 실행하는데 필수적인 라이브러리들이 포함이 됩니다.
이는 컴파일을 수행하고 런타임 단계에서 수행되는 라이브러리들이 이에 해당 됩니다.
devDependencies 현재 프로젝트를 개발하고 테스트를 하는데 사용되지만, 런타임에는 필요 없는 라이브러리들이 포함이 됩니다.
이는 런타임 단계에서는 수행되지 않고 이전 컴파일 단계에서까지만 수행되는 라이브러리가 해당 됩니다.

ex) 컴파일 단계에서 사용하는 타입스크립트와 관련된 라이브러리 @types/xxx의 경우 이에 해당 된다. 타입스크립트의 컴파일러를 통해서 실행 할 수 있다.
peerDependencies 런타임에는 필요하기는 하지만 소스코드내에 의존성을 직접 관리하지 않는 라이브러리들이 포함된다.
소스코드 내에 require , import로 불러오지는 않지만 라이브러리 의존성으로 필요한 경우가 이에 해당 됩니다.

 

사용 예시 (package.json)
"dependencies": {
    "react": "17.0.1",
    "react-dom": "17.0.1"
  },
  "devDependencies": {
    "@types/react": "17.0.21",
    "@types/react-dom": "17.0.2",
    "typescript": "~4.3.5"
  },
  "peerDependencies": {
    "jquery": "1.9.1"
  }

 

2) @types/xx

💡 TypeScript를 사용하다 보면 @types/xx 형태의 라이브러리를 마주치게 되고 이를 꼭 설치를 해야 할까라는 고민을 갖게 됩니다.

이에 대해서 설치하는것을 권장합니다.

이를 Typescript를 사용하면서 설치하지 않게 되면, dependencies 내에 설치한 라이브러리에 대한 타입 스크립트가 제대로 동작하지 않을 수 있기 때문입니다. 제대로 동작하지 않는 것은 라이브러리가 Typescript로 개발된 경우 이 라이브러리를 불러오면 타입을 추론을 제대로 할 수 없기 때문입니다.

 

사용예시 
$ npm install react react-dom

# or

$ yarn add react react-dom

$ npm install @types/react @types/react-dom --save

# or

$ yarn add @types/react @types/react-dom --dev

 

💡 위에 라이브러리 의존성 관리 종류에 따라서 @types/xx 형태는 devDependencies 내에 설치를 해야 합니다.
이는 타입스크립트는 개발 도구일 뿐이고 타입 정보는 런타임에 존재하지 않기 때문에 일반적으로 devDependencies 내에 설치를 해야합니다. 그리고 또한 설치 및 업데이트를 하게 되면, 해당 @types 역시 업데이트를 해야 한다.
(* 단, devDependencies내에 말고도 dependencies내에서 설치해야 하는 경우도 있습니다)

 

 

3) 오늘의 결론

💡 라이브러리의 의존성에 대해서 알아보았습니다.
💡  각각 상황에 따라서 의존성을 설치하고 관리해야 합니다.

 

오늘도 감사합니다😀

반응형