Ah great! So then how about having a `@seal` and/or `@preventExtensions` decorator as a shorthand?
I accept that IDEs can only do so much in checking your code, and beyond that, you're on your own... Secretly I want Javascript to become like TypeScript... all optional, backwards compatible, etc. On Tue, 8 Aug 2017 at 11:16 Darien Valentine <[email protected]> wrote: > For a class which is not intended to be subclassable, this can be done > today > with `Object.preventExtensions()` or `Object.seal()`, depending on your > intent: > > class Foo { > constructor() { > this.bar = 1; > this.baz = 2; > > Object.preventExtensions(this); > } > } > > const foo = new Foo(); > > foo.bar = 3; // okay > foo.qux = 4; // throws in strict mode > > But this approach doesn’t work when subclassing is or may be in play. It’s > also not > directly possible with the decorator proposal as it stands today — but > there has > been discussion of it and it sounds like it’s something that’s on people’s > minds: > > [2017 July 27]( > http://tc39.github.io/tc39-notes/2017-07_jul-27.html#11ive-interaction-of-privacy-fields-and-decorators > ) > > > DE: Omitted features: instance finishers. Yehuda? > > > > YK: an instance finisher is a function that is executed at the end of > > instantiation of the class at any subclass level and passes at the > > instance. this is at the end of Reflect.construct. the use case is a > > decorator to confirm that all instances are frozen or sealed. Another: > > you want to register created instance into a map. The subclass provides > > the key, the superclass expresses that the instance should be registered. > > > > DE: instance finishers change how instances are created. It's > > complicated and so wants to separate it out. > > ...looking forward to this, too. > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

