Bossy Boots is a helpful collection of type guards and assertions, written in TypeScript.
The benefits of using Bossy Boots include a more robust runtime and less repetitious logic in your code. With type definitions included out the box, TypeScript environments (especially those in strict mode) will benefit even further with accurate type inference and narrowing.
The bulk of Bossy Boots is made up of assertions and guards that take a value and check if it matches one or more predicates. The most important distinction between the two is that assertions will throw if the check fails, whereas guards will return a boolean instead, allowing you implement your own handling logic. Most assertions have (and use) guard counterparts.
npm i bossy-bootsBossy Boots is completely modular and compatible with both ESM and CommonJS environments.
// ESM
import { ... } from 'bossy-boots';
// CommonJS
const { ... } = require('bossy-boots');Below is a brief overview of the available methods. For full API documentation, see the docs.
💡 Assertions will throw if the check fails. If not handled this will stop execution.
assertIsInstanceOf(value, ...prototypes)
assertIsNotInstanceOf(value, ...prototypes)
assertIsTypeOf(value, ...types)
assertIsNotTypeOf(value, ...types)
💡 Guards return a boolean that is true if the check succeeds, and false otherwise.
isInstanceOf(value, ...prototypes)
isNotInstanceOf(value, ...prototypes)
isTypeOf(value, ...types)
isNotTypeOf(value, ...types)
While the default assertions and guards are powerful and flexible, they may become gratuitous for repetitive checks. To this end, Bossy Boots also includes a collection of methods which abstract away common checks.
| Instance | Assertion | Guard | ||
|---|---|---|---|---|
| is | is not | is | is not | |
Element |
assertIsElement() |
assertIsNotElement() |
isElement() |
isNotElement() |
HTMLElement |
assertIsHTMLElement() |
assertIsNotHTMLElement() |
isHTMLElement() |
isNotHTMLElement() |
| Type | Assertion | Guard | ||
|---|---|---|---|---|
| is | is not | is | is not | |
boolean |
assertIsBoolean() |
assertIsNotBoolean() |
isBoolean() |
isNotBoolean() |
bigint |
assertIsBigInt() |
assertIsNotBigInt() |
isBigInt() |
isNotBigInt() |
null |
assertIsNull() |
assertIsNotNull() |
isNull() |
isNotNull() |
undefined |
assertIsUndefined() |
assertIsNotUndefined() |
isUndefined() |
isNotUndefined() |
nullish * |
assertIsNullish() |
assertIsNotNullish() |
isNullish() |
isNotNullish() |
number |
assertIsNumber() |
assertIsNotNumber() |
isNumber() |
isNotNumber() |
string |
assertIsString() |
assertIsNotString() |
isString() |
isNotString() |
symbol |
assertIsSymbol() |
assertIsNotSymbol() |
isSymbol() |
isNotSymbol() |
* nullish is equivalent to null OR undefined.
assert(condition, [message])
guarantee(value)
Made with ❤️
Published under the MIT License.