> 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

Reply via email to