2017-03-16 12 views
0

import * as MyModule from 'module-name'는 어떤 종류의 문자를 만드나요?`import *는 '...'`에서 무엇을 하는가?

키가 내보내기 된 값의 이름 인 일반 자바 스크립트 개체라고 가정하고 있지만 확실하지 않습니다.

예 : 구체적

./module-that-exports.js

export const a = 'foo'; 
export const b = 'bar'; 

./module-that-imports.js

import * as thing from './module-that-exports'; 

typeof thing; // what does this print? what is its type? 

, 난 웹팩를 사용하고 있습니다. 그게 효과가 있는지 나는 모른다.

+2

왜 사용해 보지 않으시겠습니까? – SimpleJ

+0

바로 테스트 할 수있는 스크립트입니다. 나는 그것이 단지 대상이라고 생각한다. 그리고 오래 오래 갈 것입니다. 어느 브라우저가 현재 네이티브 지원을 가지고 있지 않기 때문입니다. –

+0

@SimpleJ 웹팩 프로젝트 또는 뭔가를 설치해야하고, 할 일이있어. 나는 여기에 묻는 것이 아마 같은 질문이나 다른 것을 묻는 다른 누군가를 도울 수 있다고 생각했다. –

답변

2

예, 그것은 객체 (및 호출되지 않음), 그래서 typeof"object"를 얻을 것입니다.

그러나 일반 개체가 아니며 이국적인 module namespace object입니다. Object.prototype을 상속하지 않으며 extensible이 아니며 모든 속성은 내 보낸 바인딩을 확인하는 쓰기가 불가능한 getter입니다. 당신의 transpiler/module loader는 이것을 완벽하게 모방하지 못할 수도 있습니다.

+0

. 사양 참조 주셔서 감사합니다. –

1

그럼 당신은 하나 개의 파일을 가지고 가정 해 봅시다 :

const doSomething =() => console.log('hello'); 
const doSomethingElse =() => console.log('world'); 

export default { 
    doSomething, 
    doSomethingElse 
} 

당신은 그것을 사용하는 다른 파일을 가지고있다. 모든 필드의 이름을 지정하지 않으므로 대신 필드에 그룹화합니다.

두 기능을 포함하는 객체를 생성합니다
import * as something from './doSomething' 

..

console.log(something); 

인쇄됩니다 :

{ 
    doSomething: function() { ... } 
    doSomethingElse: function() { ... } 
} 

이의 장점은 당신이 어떤 긴 가져 오기를하지 않아도되고, something 개체 만 사용하면됩니다.

something.doSomething(); 
something.toSomethingElse();