Monadic library to help with Typescripts --strictNullChecks
npm install possible-js--strictNullChecks more user-friendly.
null and undefined values,
Bash
yarn add possible-js
`
---
Usage ##
$3
`Typescript
import { ofPossible } from 'possible-js';
const btnOrUndefined = document.getElementById('btn');
`
$3
`Typescript
// if button is present, get it, or fail fast.
const button = ofPossible(btnOrUndefined).getOrThrow();
// if button is present, get it, or return a new one.
const button = ofPossible(btnOrUndefined).getOrReturn(new HTMLButtonElement());
`
$3
`Typescript
// if button is present, click it, or fail fast.
ofPossible(btnOrUndefined).doOrThrow(b => b.click());
// if button is present, click it, or do nothing.
ofPossible(btnOrUndefined).doOrIgnore(b => b.click());
`
$3
`Typescript
// if button is present, return its dimensions, or fail fast.
const dim = ofPossible(btnOrUndefined).mapOrThrow(b => ({ w: b.offsetWidth, h: b.offsetHeight }));
// if button is present, return its dimensions, or return a default value.
const dim = ofPossible(btnOrUndefined).mapOrReturn(b => ({ w: b.offsetWidth, h: b.offsetHeight }), { w: 0, h: 0 });
`
$3
`Typescript
import { ofPossible, mapOrThrow, doOrThrow } from 'possible-js';
ofPossible(btnOrUndefined).pipe(
mapOrThrow(b => b.parentElement), // if button is present find its parent, or fail fast
mapOrThrow(p => p.nextElementSibling), // if parent is present find its sibling, or fail fast
mapOrThrow(s => s.firstElementChild), // if sibling is present, find its first child, or fail fast
doOrThrow(c => c.innerHTML = 'hello') // if first child is present insert html, or fail fast
);
`
$3
`Typescript
// if button is present and its text is equal to 'SUBMIT', click it, otherwise throw an error.
ofPossible(btnOrUndefined).doOrThrow(b => b.click(), { checkFn: b => !!b && b.innerText === 'SUBMIT' });
``