2017-02-12 1 views
0

내 앱에 FileSaver을 가져 오려고했습니다. 그리고이 일에있어 유일한 방법은 내가 ECMAScript를에게 2015 모듈es6에서 commonJs 로의 각도 변경 모듈

을 대상으로 할 때

가져 오기 할당을 사용할 수없는이 오류가

import filesaver = require('filesaver'); 

그런 다음 다음 명령을 통해서였다 tsconfig.json 내의 모듈을 es6에서 commonjs로 변경하여 솔루션을 따라했습니다.

이제 모두 정상적으로 작동합니다. 그러나, 나는 abit에서 es6에서 commonjs로 바뀌는 결과가 무엇인지 걱정하고 있습니다. 분명히 이유가있는 것 같아?

변경하지 않아도되는 방법이 있습니까?

+0

동등한 es6 라인은 'import * as filesaver from'filesaver ';' – Claies

답변

1
당신이 타이프 라이터를 사용 ES6/타이프 라이터 모듈로드 구문을 사용하는 경우

예 :

es6 
system 
commonjs 
AMD 
UMD 

: 자바 스크립트로 타이프 라이터를 컴파일 할 때

import { type } from './module'; 

, 당신은 당신이 원하는 모든 모듈 로더를 타겟팅 할 수 있습니다 tsconfig.json에서 모듈 시스템을 타겟팅 할 수 있습니다.

"compilerOptions": { 
    ... 
    "module": "commonjs", 
} 

브라우저가 아직 없습니다. 기본적으로 모듈 로딩을 지원합니다. 그 때까지는 사용하는 모듈 시스템에 따라 필요한 스크립트를 포함 시키십시오.

는 "시스템"또는 "commonjs"을 대상으로 예를 들어, 당신은 제대로

내 조언을 (즉, node_modules/systemjs/DIST/system.js를) 모듈을로드 할 수있는 호환 스크립트가 포함되어 있는지 확인 , TypeScript에서 ng2 앱을 작성하는 경우

IMHO, es6은 가장 깨끗한 모듈 로딩 구문을 제공합니다. 저는 TypeScript로 Angular2 프로그램을 작성하고 es6 언어 기능 (클리너 모듈 로딩 구문 포함)을 사용하는 것을 선호합니다. TypeScript를 JavaScript로 컴파일 할 때 나는 대부분의 브라우저가 심 (shim)없이 100 %의 컴플라이언스를 제공하고, 시스템 로더 (systemjs)를 모듈 로더 (나중에 형식을 변경하려는 경우 가장 유연함)로 사용하므로 es5를 대상으로합니다.

FileServer 코드에서 TypeScript로 작성하고 es6 모듈로드 구문을 사용하십시오. 그렇게하면, 타겟팅하는 모듈 로더 구문으로 컴파일되며 나머지 ts 파일과 일치해야합니다.