import * as MyModule from 'module-name'
创建的是哪种类型?
我假设它是一个普通的javascript对象,其中的键是导出值的名称,但我不确定。
示例:
./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?
具体来说,我使用的是webpack。我不知道这是否有所作为。
答案 0 :(得分:2)
是的,它是一个对象(而不是可调用的),因此typeof
会产生"object"
。
然而,它不是一个普通的对象,它是一个充满异国情调的module namespace object。它不从Object.prototype
继承,它不是extensible,并且它的所有属性都是不可写入的getter,可以解析为导出的绑定。您的转发器/模块加载器可能无法完全模拟它。
答案 1 :(得分: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();