Show HN: Nothing.js – A chainable mock object which always returns itself
1–10 of 43 posts
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#2See MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
Edit: Won't help, because hint == 'number' is only triggered if used with unary plus or minus. Disregard this comment.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#3Perhaps use the hint parameter of Symbol.toPrimitive() to fix some gotchas like Nothing + 123 => '123'? See MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... Edit: Won't help, because hint == 'number' is only triggered if used with unary plus or minus. Disregard this comment.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#4With it
idx(props, _ => _.user.friends[0].friends)
compiles to props.user == null ? props.user :
props.user.friends == null ? props.user.friends :
props.user.friends[0] == null ? props.user.friends[0] :
props.user.friends[0].friends
Optional chaining[2] would add this to JS at the language level by using ?. as the operator.[0]: https://github.com/facebookincubator/idx [1]: https://github.com/dralletje/idx.macro [2]: https://github.com/tc39/proposal-optional-chaining
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#5Wouldn't this swallow errors that you wouldn't want it to swallow? e.g. you try to access a property on a value that's null (which you think isn't null), and instead of getting an error, nothing happens. Idx[0] is a way better solution to dealing with the boilerplate of checking for null/undefined that has 0 runtime cost due to being compiled away by babel. It works with type systems, and you can even use it as a bab…
> you try to access a property on a value that's null (which you think isn't null), and instead of getting an error, nothing happens
You can check for Nothing if you know you shouldn't get one. It's not about swallowing errors, it's about removing try/catch and all this `a && a.b && a.b.c && a.b.c()` boilerplate code.
> Optional chaining[2] would add this to JS at the language level by using ?. as the operator
But it's not there yet and it will require a transpilation step for quite some time before all the major browsers will introduce this feature.
Nothing returns "safe" default values instead of null/undefined, which might come in useful in some cases. Also, it can be used in unit tests to mock some deeply-nested constructs.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#6Does anyone know of a working Proxy polyfill? I've never been able to find one.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#7> The implementation uses Symbol and Proxy behind the hood so you might need to use appropriate polyfills... Does anyone know of a working Proxy polyfill? I've never been able to find one.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#8> The implementation uses Symbol and Proxy behind the hood so you might need to use appropriate polyfills... Does anyone know of a working Proxy polyfill? I've never been able to find one.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#9For example it is not really clear if 'executeAction()' etc are part of Nothing.js. I assumed they were, but then the next sample seems to do property chain traversal transparently, without them.
Re: Show HN: Nothing.js – A chainable mock object which always returns itself
#10Also some of you could be interested in optional.js[1], it's Java's Optional for js, makes it arguably more pleasant to deal with null values, no help for chaining though!
[0] https://github.com/facebookincubator/idx [1] https://github.com/JasonStorey/Optional.js