You summarized the "nobody liked it" bit of my post. I just wanted to add some background to this discussion.
Regards On Mon, Jun 27, 2016 at 8:34 PM, Isiah Meadows <[email protected]> wrote: > Descriptors are annoying to deal with, anyways IMO. If it had a > corresponding syntax, and if you could use functions/object prototypes to > type them, they might have had a little better traction, but here's my > opinion: anything type-wise that can change at runtime (like the descriptor > proposal) doesn't seem likely to gain much traction mainly because 1. it's > no better than the inline caches used now, and 2. types that are added at > runtime can't be statically analyzed (which is why people use type > annotations in the first place), and thus don't scale at all. That means > likely resistance from both implementors and users at scale, which > basically equates to it's not likely. > > On Fri, Jun 24, 2016, 18:33 Andrea Giammarchi <[email protected]> > wrote: > >> FWIW I once proposed to add `type` as descriptor property (and without >> success) so you could: >> >> ```js >> Object.defineProperties( >> Person.prototype, >> { >> age: {type: 'number', value: 0}, >> name: {type: 'string', value: 'anonymous'} >> } >> ); >> ``` >> >> in order to have a "type" defined and inheritable avoiding de-opt but >> throwing instead when it's not the expected one. >> >> It could be used to also promote an "un-typed" property like: >> >> ```js >> var obj = {id: 'abc-123'}; >> // later on >> Object.defineProperty(obj, 'id', {type: 'string'}); >> ``` >> And throw if different or if it was type defined already. >> >> The `type` would work with `get`/`set` too, as well as `enumerable`, >> `configurable`, and `writable` properties. >> >> It'd be fully backward compatible (ignored) and easy to transpile via >> flow like syntax. >> >> It could also be polyfilled. >> >> TL;DR nobody liked it ^_^ >> >> >> >> On Thu, Jun 23, 2016 at 9:00 PM, Igor Baklan <[email protected]> wrote: >> >>> By the way it looks very similar to [s-ctypes/StructType]( >>> https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/StructType#Describing_fields) >>> Although it designed for interoperability with native code (not for code >>> performance improvement, or better code readability), it still might be >>> interesting for you (more links can be found at [wiki/Libffi/JavaScript]( >>> https://en.wikipedia.org/wiki/Libffi#JavaScript) ) >>> >>> _______________________________________________ >>> 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 >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

