<div dir="ltr">I really like the way this sounds, just wanted to submit my approval :D</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 5, 2013 at 12:37 PM, David Herman <span dir="ltr"><<a href="mailto:dherman@mozilla.com" target="_blank">dherman@mozilla.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Jun 5, 2013, at 11:51 AM, Kevin Smith <<a href="mailto:zenparsing@gmail.com">zenparsing@gmail.com</a>> wrote:<br>


<br>
> It occurs to me that this is valid under the current grammar:<br>
><br>
>     import { default as foo } from "foo";<br>
>     export { foo as default };<br>
><br>
> We've discussed using a well-known symbol for the default export, but this simple desugaring might be another option:<br>
><br>
>     import foo as "foo";<br>
>     // => import { default as foo } from "foo";<br>
><br>
>     export default = expr;<br>
>     // => let __genident__ = expr; export { __genident__ as default };<br>
><br>
> This would provide easy access to the default export on a module instance object without having to obtain a reference to a symbol.<br>
><br>
>     module Foo from "foo";<br>
>     F.default();<br>
><br>
> Just throwing an idea out...<br>
<br>
</div></div>Yes, this is actually the direction I've been going in my thinking, based on the critique that export default is the only export form that isn't a binding form, especially when combined with a named function literal (`export default function f() { ... }`). I also like the conceptual simplicity of the default export simply being a public export named "default". Moreover, Yehuda has urged me to consider<br>


<br>
    export x = 17;<br>
<br>
as sugar for<br>
<br>
    export let x = 17;<br>
<br>
When you put this all together, you can actually just see `export default = ...` as sugar for `export let default = ...`. We can also allow the keyword `default` to be used for the other exported declaration forms like `export function default(...) { ... }` and `export class default { ... }`. (We'll finesse the .name property of such a declared function to be taken from the module name, a la Brandon's accepted proposal for .name in ES6.) To recap, the following all become valid ways to specify the default export:<br>


<br>
    export let default = 17;<br>
    export default = 17;<br>
    export default = function f() { ... };<br>
    export default = class { ... };<br>
    export function default(...) { ... }<br>
    export class default { ... }<br>
<br>
And you can now import both the default and non-default exports of a module in a single line:<br>
<br>
    import { default as $, ajax } from "jquery";<br>
<br>
Dave<br>
<div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>- Matthew Robb
</div>