티스토리 뷰

TypeScript 프로젝트를 라이브러리 모드로 빌드할 때 TS2742 오류를 마주하는 경우가 있습니다.

이 오류는 주로 내부에서 사용되는 타입이 외부로 제대로 내보내지지 않아 발생합니다.

특히 lottie-web과 같은 라이브러리를 사용할 때 흔히 볼 수 있으며, 이 포스팅에서는 이 문제의 원인과 해결 방법을 다룹니다.

🧐 오류의 원인

TS2742: The inferred type of '...' cannot be named without a reference to '...' 오류는 다음과 같은 이유로 발생합니다.

  • 라이브러리 모드의 d.ts 생성 규칙:
    • TypeScript는 라이브러리 모드에서 .d.ts 파일을 생성할 때 외부로 export된 대상에 대해서만 타입 정의를 만듭니다.
  • 내부 전용 타입 누락:
    • 만약 컴포넌트나 모듈 내부에서만 사용되는 타입(예: lottie-webAnimationItem)이 있다면, 이 타입에 대한 .d.ts 파일은 생성되지 않습니다.
  • 타입 추론 문제:
    • 결과적으로, TypeScript는 내부적으로 사용된 AnimationItem 타입을 안정적인 이름이나 경로로 인식하지 못하고, 외부 모듈에 대한 참조 없이 이름을 붙일 수 없다는 오류를 발생시킵니다.

🛠️ 해결 방법

이 문제를 해결하는 가장 간단하고 명확한 방법은 패키지 엔트리 포인트에서 필요한 타입을 명시적으로 다시 내보내는(re-export) 것입니다.

예를 들어, lottie-animation.ts 파일에서 AnimationItem 타입을 사용하고 있다면, 패키지의 엔트리 포인트 파일 (index.ts 등)에 다음 코드를 추가합니다.

// 패키지의 엔트리 포인트 파일 (예: index.ts)

// 필요한 타입을 lottie-web에서 가져와 다시 내보냅니다.
export { AnimationItem } from 'lottie-web';

// 다른 모든 컴포넌트나 모듈도 내보냅니다.
export * from './components/your-component';
export * from './utils/your-utils';

이렇게 하면 TypeScript는 AnimationItem 타입이 외부로 export된 것으로 인식하여, .d.ts 파일에 올바른 타입 정의를 포함시키게 됩니다.

결과적으로 TS2742 오류는 해결되고, 안정적인 라이브러리 빌드가 가능해집니다.🎉

✅ 요약

TS2742 오류는 라이브러리 모드에서 내부적으로만 사용된 타입이 .d.ts 파일에 포함되지 않아 발생하는 문제입니다.

해결책은 패키지 엔트리 포인트에서 해당 타입을 명시적으로 re-export하여 TypeScript가 이를 올바르게 인식하도록 하는 것입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함