Babel Plugin: syntax-exists
This is a Babel plugin which adds syntax for making existential checks in your code.
It uses the the keyword ex
which is short for exists. :sparkles:
Features
What?
From The Little Book on Coffeescript:
Using if
for null
checks in JavaScript is common, but has a few pitfalls in that empty strings and zero
are both coerced into false
, which can catch you out. CoffeeScript existential operator ? returns true
unless a variable is null
or undefined
, similar to Ruby's nil?
.
So what does it look like?
foo.ex
compiles to typeof foo !== "undefined" && foo !== null
How about a more exhilirating use case?
Given an object:
let obj = {
attr: 'value',
nested_attr: { name: 'nested' },
func: () => 777
}
We can write write the following statements and expect the subsequent returns:
obj.ex.attr // 'value'
obj.attr.ex // true
obj.nested_attr.ex.name // 'nested'
// Oh, and it works for functions too...
// --------------------------------------
obj.func.ex // true
obj.func.ex() // 777
// But what about undefined errors?
// --------------------------------------
obj.doesnt_exist.ex // false
// obj.doesnt_exist.ex.nope // false
obj.not_a_func.ex() // false
Installation
$ npm install babel-plugin-syntax-exists
Usage
Via .babelrc
(Recommended)
babelrc
{
"plugins": ["syntax-exists"]
}
Via CLI
$ babel --plugins syntax-exists script.js
Via Node API
require('babel').transform('code',{
plugins: ['syntax-exists']
});