<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">> With this idea you cannot look at the import statement to see if the imported binding is a module instance object or not.</span><div><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">the flip side of that is that you don't need to know whether something is a default export or a named export to import it e.g.</span></div><div>
<span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">```js</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">export let foo = function () {}</span></div>
<div class="gmail_extra">export let bar = function () {}<br>```</div><div class="gmail_extra"><br></div><div class="gmail_extra">and</div><div class="gmail_extra"><br></div><div class="gmail_extra">```js</div><div class="gmail_extra">
class Baz {</div><div class="gmail_extra">    foo(){}</div><div class="gmail_extra">    bar(){}</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra">let baz = new Baz();</div><div class="gmail_extra">
export default baz;</div><div class="gmail_extra">```</div><div class="gmail_extra"><br></div><div class="gmail_extra">could both be imported the same.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 19, 2014 at 9:57 AM, Erik Arvidsson <span dir="ltr"><<a href="mailto:erik.arvidsson@gmail.com" target="_blank">erik.arvidsson@gmail.com</a>></span> wrote:<br>
<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"><br><div class="gmail_quote">
<div class="">On Thu, Jun 19, 2014 at 6:41 AM, Calvin Metcalf <span dir="ltr"><<a href="mailto:calvin.metcalf@gmail.com" target="_blank">calvin.metcalf@gmail.com</a>></span> wrote:<br>

<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"><p dir="ltr">One other option could be for import name from 'path'  to resolve to the module body there is no default export, thanks to the static analysis you'll always know when default is present.</p>


</blockquote></div><div>That is a refactoring hazard. If the module changes to add/remove the default export the import will still succeed but the value is either a module instance object or anything:</div><div><br></div>
<div>
// a.js</div>
<div>export default class C { ... }</div><div><br></div><div>// importer.js</div><div>import A from './a';</div><div>new A();</div><div><br></div><div>Now a.js changes.</div><div><br></div><div>// a.js V2</div><div>


export class C { ... }</div><div><br></div><div><div>// importer.js</div><div>import A from './a';</div><div>new A();  // TypeError: A is not a function</div></div><div><br></div><div>With this idea you cannot look at the import statement to see if the imported binding is a module instance object or not.</div>
<div class="">

<div><br></div><div> </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"><p dir="ltr"> </p>
<p dir="ltr">The import 'path'/this.get syntax is a lot less burdensome if it's only required by edge cases like needing both default export and all the named ones. </p>
<div class="gmail_quote"><div><div>On Jun 19, 2014 6:32 AM, "Michał Gołębiowski" <<a href="mailto:m.goleb@gmail.com" target="_blank">m.goleb@gmail.com</a>> wrote:<br type="attribution">

</div></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><div>
<div dir="ltr"><div><span style="font-family:arial,sans-serif;font-size:13px">Thanks, Dave, for bringing that up, it shows you're open for feedback. That said (bikeshed begins), w</span><span style="font-family:arial,sans-serif;font-size:13px">hat's wrong with:</span></div>





<span style="font-size:13px;font-family:arial,sans-serif">```js</span><br style="font-size:13px;font-family:arial,sans-serif"><span style="font-size:13px;font-family:arial,sans-serif">import "fs" as fs;</span><br style="font-size:13px;font-family:arial,sans-serif">





<span style="font-size:13px;font-family:arial,sans-serif">```</span><div><font face="arial, sans-serif">? I feel that a lot of effort went in ES6 into reducing boilerplate via e.g. arrow functions, classes etc. but if you start with Node's require, this adds clutter. Compare these 3 forms of importing all the module "lodash" bindings to an object _:<br>





</font><div><span style="font-size:13px;font-family:arial,sans-serif">```js</span><br style="font-size:13px;font-family:arial,sans-serif"><span style="font-size:13px;font-family:arial,sans-serif">var _ = require("lodash"); // Node</span><br style="font-size:13px;font-family:arial,sans-serif">





<span style="font-size:13px;font-family:arial,sans-serif">import * as _ from "lodash"; // Dave's syntax</span><br style="font-size:13px;font-family:arial,sans-serif"><span style="font-size:13px;font-family:arial,sans-serif">import "lodash" as _;</span><br style="font-size:13px;font-family:arial,sans-serif">





<span style="font-size:13px;font-family:arial,sans-serif">```</span></div></div></div>
<br></div></div><div>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></div></blockquote></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div></div><span class=""><font color="#888888"><br><br clear="all"><div><br></div>-- <br>erik
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>-Calvin W. Metcalf
</div></div>