<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 19, 2014 at 6:41 AM, Calvin Metcalf <span dir="ltr"><<a href="mailto:calvin.metcalf@gmail.com" target="_blank" class="cremed">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>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><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 class="h5">On Jun 19, 2014 6:32 AM, "Michał Gołębiowski" <<a href="mailto:m.goleb@gmail.com" target="_blank" class="cremed">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 class="h5">
<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 class="">_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank" class="cremed">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank" class="cremed">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" class="cremed">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank" class="cremed">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>erik
</div></div>