ESM exporting getters and setters.
The getter part is already how it works - you can export let foo = false;
and then later foo = true; and then export function setFoo(v) { foo = v; }. Why is the getter/setter syntax a significant improvement over this?
On Thu, Sep 20, 2018 at 6:00 PM Jordan Harband <ljharb at gmail.com> wrote:
The getter part is already how it works - you can
export let foo = false;and then laterfoo = true; and thenexport function setFoo(v) { foo = v; }. Why is the getter/setter syntax a significant improvement over this?On Thu, Sep 20, 2018 at 4:21 PM, Michael J. Ryan <tracker1 at gmail.com> wrote:
If you removed just the export; it wouldn't be valid code....
// myFoo.mjs_hiddenFoo = false; /*export*/ get foo() { return _hiddenFoo; } /*export*/ set foo(value) { _hiddenFoo = !!value; }
/*export*/ get foo() {
^^^
SyntaxError: Unexpected identifier
var hiddenFoo; var foo = { get foo() { return _hiddenFoo; },
set foo(value) {
_hiddenFoo = !!value;
}
} export {foo};
// --- main import {foo} from './zz.mjs';
console.log( "what is foo?", foo );
// -- output
what is foo? { foo: [Getter/Setter] }
On Fri, Sep 21, 2018 at 1:13 PM J Decker <d3ck0r at gmail.com> wrote:
On Thu, Sep 20, 2018 at 6:00 PM Jordan Harband <ljharb at gmail.com> wrote:
The getter part is already how it works - you can
export let foo = false;and then laterfoo = true; and thenexport function setFoo(v) { foo = v; }. Why is the getter/setter syntax a significant improvement over this?On Thu, Sep 20, 2018 at 4:21 PM, Michael J. Ryan <tracker1 at gmail.com> wrote:
If you removed just the export; it wouldn't be valid code....
// myFoo.mjs_hiddenFoo = false; /*export*/ get foo() { return _hiddenFoo; } /*export*/ set foo(value) { _hiddenFoo = !!value; }/*export*/ get foo() { ^^^SyntaxError: Unexpected identifier
var hiddenFoo; var foo = { get foo() { return _hiddenFoo; },
set foo(value) { _hiddenFoo = !!value; }} export {foo};
I missed the point a little... would be something like
const foofoo = foo.foo; // which doesn't result as a setter/getter reference, but the value... export {foofoo}
// myFoo.mjs _hiddenFoo = false; export get foo() { return _hiddenFoo; }
Not sure if this has been discussed, but would be a nice feature to have in some cases... I know, total side effects and mutations, all the same, would be a nice to have in a few cases.
// myFoo.mjs _hiddenFoo = false; export get foo() { return _hiddenFoo; } export set foo(value) { _hiddenFoo = !!value; } // main.mjs import {foo} from './myFoo.mjs'; Not sure if this has been discussed, but would be a nice feature to have in some cases... I know, total side effects and mutations, all the same, would be a nice to have in a few cases. -- Michael J. Ryan 480-270-4509 https://www.tracker1.info/ me at tracker1.info tracker1 at gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180920/c1cee2ab/attachment.html>