> I wish JS had Shape objects, which would not only ease performance
> optimization for the benefit of JS engines
> (https://youtu.be/5nmpokoRaZI?t=871 <https://youtu.be/5nmpokoRaZI?t=871>),
> but also helps for validation, like an interface
>
> ```js
> shape Point { x: Number, y: Number, name: String };
>
> const p = Point({x: 1, y: 2, name: 'foo'})
>
> const p = Point({x: 1, y: 2, naem: 'foo'}) // throws
> ```
@cyril, you are thinking too low-level. given how time-constrained most
web-projects are, shape-validating low-level library-code is poor-allocation of
a backend-engineer’s time, that could be better spent on integration-level
interfaces (e.g. browser <-> server interface) where most of these validation
painpoints occur, e.g. [1]:
```http
// frontend-request
POST /api/v2/createPoint
{ "x": 1, "y": 2, "naem": "foo" }
// useless backend-response
500 Internal Server Error or TIMEOUT
// better backend-response (that can be reasonably debugged)
400
{
"message": "400 POST /api/v2/createPoint - object body must have property
\"name\"",
"statusCode": 400
}
```
[1] shape-validate integration-level interfaces with swagger
https://kaizhu256.github.io/example-esdiscuss-topic-shape-objects/assets.swgg.html
<https://kaizhu256.github.io/example-esdiscuss-topic-shape-objects/assets.swgg.html>
kai zhu
[email protected]
> On 16 Jun 2018, at 2:30 AM, Bob Myers <[email protected]> wrote:
>
> The engines already do these optimizations.
>
>
> On Sat, Jun 16, 2018 at 1:27 PM Cyril Auburtin <[email protected]
> <mailto:[email protected]>> wrote:
> I wish JS had Shape objects, which would not only ease performance
> optimization for the benefit of JS engines
> (https://youtu.be/5nmpokoRaZI?t=871 <https://youtu.be/5nmpokoRaZI?t=871>),
> but also helps for validation, like an interface
>
> ```js
> shape Point { x: Number, y: Number, name: String };
>
> const p = Point({x: 1, y: 2, name: 'foo'})
>
> const p = Point({x: 1, y: 2, naem: 'foo'}) // throws
> ```
>
> That object would have its properties immutable
>
> I think proposal-first-class-protocols
> (https://github.com/michaelficarra/proposal-first-class-protocols/issues/27#issuecomment-386975099
>
> <https://github.com/michaelficarra/proposal-first-class-protocols/issues/27#issuecomment-386975099>)
> could more or less directly do that feature
>
> _______________________________________________
> es-discuss mailing list
> [email protected] <mailto:[email protected]>
> https://mail.mozilla.org/listinfo/es-discuss
> <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