Optional.js
A container object that wraps possibly undefined values in JavaScript - inspired by Java Optionals
Optional;
Features
- Runs in browser and Node
- Full Java 8 Optional API is supported, and partial Java 9 API implemented (everything minus stream())
- Zero dependencies
- TypeScript type definitions included
- Lightweight (<1.0 KB minified, gzipped)
Installation
Download the latest release from GitHub or from NPM
via npm:
$ npm install optional-js
then just require in node:
const Optional = ;const emptyOptional = Optional;
alternatively, use the browser compatible build in the ./dist
directory of the npm package
Not using a module loader? Include the script, and the browser global Optional
will be added to window.
Usage
Java docs - Java 9 Optionals
TSDocs - index.d.ts
JS Example:
// "login.js"const Optional = ;// Define some simple operationsconst getUserId =username === 'root' ? 1234 : 0;const verify =userId === 1234;const login =console;// Declare a potentially undefined valueconst username = processargv2;// Wrap username in an Optional, and build a pipeline using our operationsOptional;
Then, from the terminal...
$ node login.js root"Logging in as : 1234"
Building
download:
git clone git@github.com:JasonStorey/Optional.js.git
enter the directory, and install dependencies:
cd Optional.js && npm install
build:
npm run build
Testing
run the tests:
npm test
Contributing
Found a bug or missing feature? Please open an issue!
Send your feedback. Send your pull requests. All contributions are appreciated!
License
Optional.js may be freely distributed under the MIT license - LICENSE