← Back to NOTES 🌰
← Back to Effective TypeScript
← 아이템 50 - 오버로딩 타입보다는 조건부 타입을 사용하기
핵심 요약
구조적 타이핑을 활용하여 필요한 타입 선언만 추출하는 미러링 기법을 사용하면, 전체 라이브러리 의존성 없이 필요한 기능만 타입으로 정의할 수 있다. 이를 통해 다양한 환경의 사용자에게 더 나은 개발 경험을 제공할 수 있다.
자세한 내용
CSV 파싱 라이브러리를 작성하고 공개할 때 발생하는 의존성 문제를 해결하는 방법:
문제 상황:
- Buffer 타입을 사용하려면
@types/node를 devDependencies에 추가해야 함
- 이는 다음 두 사용자 그룹에게 문제가 발생:
- @types를 사용하지 않는 JavaScript 개발자
- NodeJs를 사용하지 않는 TypeScript 개발자
해결 방법 - 미러 타입 사용:
- Buffer 타입을 직접 선언하지 않고, 필요한 메서드만 가진 interface 생성
- 구조적 타이핑을 활용하여 실제 Buffer 인스턴스와 호환 가능
장점:
- Buffer interface보다 훨씬 짧고 간결함
- 실제로 필요한 부분만 명시
- NodeJs 환경에서 실제 Buffer 인스턴스로 호출 가능
- NodeJs & TypeScript를 이용하지 않는 사용자에게 더 나은 사양 제공
- 유닛 테스트와 상용 시스템 간 의존성 분리에도 유용
주의사항: