Skip to content

Super-compact syntax for your type checking and throw statements.

License

Notifications You must be signed in to change notification settings

radiovisual/throwif

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

throwif

Super-compact syntax for your type checking and error throwing.

Build Status Coverage Status

Note: This is currently in the experimental phase. Please report any issues and use with caution. Pull requests welcome.

Install

$ npm install --save throwif

Usage

const throwif = require('throwif');

throwif(str, '!== string');
//=> TypeError: Expected a string

throwif(500, '!<=', 99);
//=> Error: 500 !<= 99

Why?

Instead of typing this:

if (typeof str !== 'string') {
    throw new TypeError('Expected a string');
}

You can just type this:

throwif(str, '!== string');

Both blocks of code do the exact same thing (they throw the exact same error, if applicable), but throwif does the same with less code, while maintaining readability.

API

throwif(target, equalityOperator|typeofString, [object]);

target

Type: string|number|object|function|symbol

This is the item you want to evaluate for type, equality, etc.

typeofString

Type: String
Format: <equality-operator> <type>

Use this as a shorthand for the typeof operator.

typeof Examples

const throwif = require('throwif');

const str = 'foo';

// Not Equal
throwif(str, '!== string');
throwif(str, '!== function');
throwif(str, '!== number');
throwif(str, '!== object');
throwif(str, '!== symbol');
throwif(str, '!== boolean');
throwif(str, '!== undefined');

// Equal
throwif(str, '=== string');
throwif(str, '=== function');
throwif(str, '=== number');
throwif(str, '=== object');
throwif(str, '=== symbol');
throwif(str, '=== boolean');
throwif(str, '=== undefined');

equalityOperator

Type: string

The string version of the equality operator want to use for your rule.

You can show negation with a prepended exclamation point, which is not possible with certain comparison operators in JavaScript, but throwif makes this shortcut available on all comparison and equality operators. Only use operator strings when you want to check equality and comparison, for typeof operations (to check if an item is a certain type), use typeofString.

  • '==='
  • '!=='
  • '>'
  • '!>'
  • '>='
  • '!>='
  • '<'
  • '!<'
  • '<='
  • '!<='

Equality Examples

const throwif = require('throwif');

throwif('foo', '!==', 'bar');
//=> Error: "foo" !== "bar"

throwif(42, '===', 42);
//=> Error: 42 === 42

throwif(500, '>', 100);
//=> Error: 500 > 100

throwif(100, '!<=', 99);
//=> Error: 100 !<= 99

Known Limitations

  • You can't use the equality string to check for undefined, you must use the typeofStr.

    // not allowed
    throwif(str, '===', undefined);
    
    // use this instead
    throwif(str, '=== undefined');
  • To check for equality between Symbols, the following cast takes place: Object(Symbol()).toString();. If you know of a better way to check equality for Symbols, please open an issue, or submit a pull request.

Related

  • detonate Go boom! with a clean, compact syntax for your javascript type checking & error throwing.

License

MIT © Michael Wuergler

About

Super-compact syntax for your type checking and throw statements.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published