<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><span style="font-family:arial,sans-serif;font-size:13px">    module name from './path'</span></div>
<div class="gmail_extra"><span style="font-family:arial,sans-serif;font-size:13px">    ...</span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif;font-size:13px">    name.method();</span></div></div>
</blockquote><div><br></div><div>Right - that would work for objects-as-modules, but this wouldn't:</div><div><br></div><div>    import { something } from "./path";</div><div><br></div><div>Unless you somehow emitted getters for all references to "something".  Without consulting documentation, I would expect that these two things:</div>
<div><br></div><div>    module x from "./path";</div><div>        // From within some function or other</div><div>        x.foo();</div><div><br></div><div>    import { foo } from "./path";</div><div>        // From within some function or other</div>
<div>        foo();</div><div><br></div><div>would be equivalent.  I think a beginner would find a difference there surprising.</div><div><br></div><div>Also, consider hoisting.</div><div><br></div><div>    // Call an imported function directly</div>
<div>    import { foo } from "./path";</div><div>    foo(123);</div><div><br></div><div>    module m from "./path";</div><div>    m.foo();</div><div>    </div><div>With "object-as-module", neither one is going to work if you have a circular dependency at play.</div>
<div><br></div><div>Of course, these gains aren't giant - they support edge cases.  But they are real.</div><div><br></div></div></div></div>