아이템 51 의존성 분리를 위해 미러 타입 사용하기
작성 중인 라이브러리가 의존하는 라이브러리의 구현과 무관하게 타입에만 의존한다면 필요한 선언부만 추출하여 작성 중인 라이브러리에 넣는 것(미러링)을 고려해 보는 것이 좋다. Node.js 기반 타입스크립트 사용자에게는 변화가 없지만 웹 기반이나 자바스크립트 등 다른 모든 사용자에게는 더 나은 사양을 제공할 수 있다.
다른 라이브러리의 타입이 아닌 구현에 의존하는 경우에도 동일한 기법을 적용할 수 있고 타입 의존성을 피할 수 있다. 그러나 프로젝트의 의존성이 다양해지고 필수 의존성이 추가됨에 따라 미러링 기법을 적용하기가 어려워진다. 다른 라이브러리의 타입 선언의 대부분을 추출해야 한다면, 차라리 명시적으로 @types
의존성을 추가하는 게 낫다.
요약
- 필수가 아닌 의존성을 분리할 때는 구조적 타이핑을 사용한다.
- 공개한 라이브러리를 사용하는 자바스크립트 사용자가
@types
의존성을 가지지 않게 해야 한다. 그리고 웹 개발자가 Node.js 관련 의존성을 가지지 않게 해야 한다.