esModuleInterop 옵션의 타이프 라이터

더 증가 esModuleInterop이없는 경우

도서관 코드 :

CONST 수출 = 1 ;
수출 기본  기능 } {) (B를

코드를 생성

수출 .__ esModule는 = 진정한 ;
exports.a = 1 ;
함수 B () {}
수출 [ "기본"] = B;

 

코드 라이브러리를 사용하여 :

'./export'에서 lib 디렉토리로 수입 * ;

CONSOLE.LOG (LIB);

코드를 생성

수출 .__ esModule는 = 진정한 ;
var에 LIB의 =은 ( "./ 내보내기"를 필요로 );
CONSOLE.LOG (LIB);
'./export'에서 수입 LIB ;

CONSOLE.LOG (LIB);

코드를 생성

수출 .__ esModule는 = 진정한 ;
var에 export_1의 =은 ( "./ 내보내기"를 필요로 );
CONSOLE.LOG (export_1 [ "기본"]);
위의 코드를 이용하여 코드를 생성 TS 가능하다. 

그러나 우리는 FS와 같은 타사 라이브러리를 사용하는 경우. 다음과 같이 우리의 코드는
'FS'에서 수입 FS ;

CONSOLE.LOG (FS);

코드를 생성

수출 .__ esModule는 = 진정한 ;

var에 fs_1의 =은 ( "FS"필요 );
CONSOLE.LOG (fs_1 [ "기본"]);

이 방법은 FS에 사용되지 않도록 FS는, 디폴트 속성입니다.

그래서, esModuleInterop하지 않고, 제대로 FS를 참조하는 방법이 있습니다 :

'FS'에서 FS와 같은 수입 * ;
CONSOLE.LOG (FS);

// 또는 

가져 오기 fsync를 {에서} 'FS' ;
CONSOLE.LOG (fsync를);

 

게다가 esModuleInterop, 코드

'./export'에서 lib 디렉토리로 수입 * ;

CONSOLE.LOG (LIB);

다음과 같이 컴파일 :

VAR __importStar = (  &&  .__ importStar) || 기능 (모드) {
     경우 (MOD && 개조 .__ esModule) 복귀 모드를;
    VAR의 결과 = {};
    경우 (MOD! = null의 )  ( VAR의 K  개조) 하는 경우 (Object.hasOwnProperty.call (MOD, K)) 결과 [K] = 개조 [K];
    결과 [ "기본"= 개조;
    반환 결과를;
};
수출 .__ esModule는 = 진정한 ;
VAR LIB = __importStar (( "./ 내보내기"를 필요로 ));
CONSOLE.LOG (LIB);

코드

'./export'에서 수입 LIB ;

CONSOLE.LOG (LIB);

로 컴파일

VAR __importDefault = (  &&  .__ importDefault) || 기능 (모드) {
     반환 (모드 && 모드 .__ esModule)? 모드 : { "기본" : 모드를};
};
수출 .__ esModule는 = 진정한 ;
VAR export_1 = __importDefault (( "./ 내보내기"를 필요로 ));
CONSOLE.LOG (export_1 [ "기본"]);

그때

'FS'에서 수입 FS ;

CONSOLE.LOG (FS);

그것은 일반적으로 사용할 수 있습니다.

 

요약 :

수출에 대한 라이브러리를 사용하는 기존의 js의 많은 방법, 그리고 수출 기본 속성,하지만 직접 수출 module.exports의 사용을 commonjs 때문에 = XXX,이 'FS'에서 수입 FS로 이어질 것입니다; 문법의 도입은 실패합니다.

호환성을 위해 이러한 라이브러리 타이프 라이터 JS, esModuleInterop의 도입, 그래서 'FS'정상적인 사용에서 해당 수입 FS 때문에.

 

추천

출처www.cnblogs.com/chen8840/p/12144202.html