그것은 컴파일러에 의해 생성 된 이름을 사용하는 것이 안전합니다. 그것은 바뀔 수 있습니다.
해결 방법 그러나 당신이 할 수 있습니다 : 당신은 변수 module
를 사용, 그리고
var module = module_1.default;
수 있습니다
import myModule from 'module'
const module = myModule
두 번째 라인에 컴파일됩니다.
왜 가까운 장래에
export default
보다는
export =
을 사용, export default
의 사용은 표준이 될 것입니다. 이 기능은 현재 CommonJS 사용 사례를 대체하기 위해 ECMAScript에 의해 설계되었습니다. 회원 default
이 더 좋고 일반적입니다.
다음은 예입니다. 당신은 객체 내 보내야 : 다음
const myConfigObject = Object.freeze({
dbHost: "",
dbUser: "",
// ...
})
export = myConfigObject
을, 당신은 그것을 가져올 수 있습니다
import * as myConfigObject from "./myConfigObject"
후, 당신은 관련된 일을 할 수있는 모듈 사용자를하는 데 도움이 작은 도우미 함수 toDSN
을 수출하고 싶습니다 export 된 오브젝트 그렇게하는 방법? 헬퍼를 구성의 구성원으로 추가 할 수 있습니다. 그러나 그것은 우아하지 않을 것입니다.
export default Object.freeze({
dbHost: "",
dbUser: "",
// ...
})
export function toDSN(configObj) {
return // ...
}
그런 다음, 기본 객체를 가져올 수 있습니다 :
다음은 ES6의 방법입니다
import myConfigObject from "./myConfigObject"
... 또는 toDSN
를 가져옵니다
import { toDSN } from "./myConfigObject"
... 또는 모두 가져 오기 :
import myConfigObject, { toDSN } from "./myConfigObject"
작은 누점은 현재 Node.js 사용자 코드에만 해당됩니다. 구성원은 default
이어야합니다. Node.js가 ES6 모듈을 구현할 때 함정은 더 이상 존재하지 않습니다.
왜 TS 컴파일러가 가져 오기를위한 중간 변수를 생성합니까?
ES6 모듈의 일반적인 경우에 필요하기 때문에. 다음 ES6 코드는 다음과 같습니다.
import myConfigObject, { toDSN } from "./myConfigObject"
여기서 두 개의 변수를 가져옵니다. 그러나 CommonJS (또는 AMD) require
은 단일 변수 만 가져올 수 있습니다. 따라서 컴파일러는이 단일 변수를 중간 변수 myConfigObject_1
으로 가져옵니다. 그런 다음 myConfigObject
개체는 myConfigObject_1.default
을 통해 사용할 수 있으며 toDSN
은 myConfigObject_1.toDSN
을 통해 사용할 수 있습니다.
ES6 모듈에 대한 소개는 the article from Mozilla을 제안합니다.
나는 아마도 당신에게 말할 필요가 없지만, 미래에이 질문을하는 사람들을 위해서 말할 것이다. ** 대답이'eval()'이라면, 아마도 당신은 아마 잘못된 질문 **. 'eval()'을 사용하면 보안상의 취약점과 추적하기 어려운 버그가 발생합니다. 거의 항상 더 나은 솔루션이 있습니다. –