Module interop

CommonJS 호환성은 세 층을 맞춰야 한다

타입스크립트 import 문법이 맞아 보여도 컴파일 출력, Node.js 로더, 타입 선언이 서로 다르면 런타임에서 깨질 수 있습니다.

01

컴파일 출력

tsconfig의 module 값이 require 기반인지 import 기반인지 결과 JavaScript를 바꿉니다.

02

런타임 해석

package.json type, 확장자, Node 버전이 같은 파일을 CJS 또는 ESM으로 해석합니다.

03

타입 선언

CommonJS 라이브러리는 default import 가능 여부가 선언 파일과 옵션에 영향을 받습니다.

1

compile

dist 파일에 require와 import 중 무엇이 나오는지 확인합니다.

2

execute

Node가 해당 파일을 어떤 모듈 형식으로 읽는지 맞춥니다.

3

import shape

default, namespace, named import 형태가 실제 export와 맞는지 봅니다.

4

declaration

@types 또는 직접 선언이 런타임 형태를 왜곡하지 않는지 점검합니다.