Item 51 의존성 분리를 위해 미러 타입 사용하기

필요한 타입만 가져오기

타입 선언 라이브러리를 설치해 전체 타입을 가져올 수 있지만, 필요하지 않은 타입까지 가져와야 하는 것이 문제가 될 수 있다.

예를 들면 @types/node를 devDependencies로 포함하면 다음 두 그룹 라이브러리 사용자에게 문제가 될 수 있다.

  • @types와 무관한 JS 개발자

  • NodeJS와 무관한 TS 웹 개발자

이 두 그룹의 사용자들은 사용하지 않는 모듈이 포함되어 있어 혼란스러울 것이다.

각자가 필요한 모듈만 사용할 수 있도록 구조적 타이핑(Item 4)을 적용한다. 전체 필드를 포함한 타입이 아니라 필요한 메서드와 속성만 가져와서 코드베이스에 별도로 작성하면 된다. 직접 작성한 해당 타입은 라이브러리의 타입과 호환이 된다.

이러한 방식을 미러링 기법이라고 하며, 유닛 테스트와 상용 시스템 간의 의존성을 분리하는 데도 유용하다. 자세한 내용은 Item 4를 참고한다.

Summary

  • 필수가 아닌 의존성을 분리할 때는 구조적 타이핑을 사용한다.

  • 공개한 라이브러리를 사용하는 JS 사용자가 @types 의존성을 갖지 않도록 하자. 그리고 웹 개발자가 NodeJS 관련된 의존성을 갖지 않게 하자.

Last updated