1.0.4 • Published 5 years ago

typecheck-extended v1.0.4

Weekly downloads
343
License
MIT
Repository
github
Last release
5 years ago

typecheck-extended · GitHub license npm version Coverage Status CI Status PRs Welcome

JavaScript type checker with extended types. Validates all built-in types. Additionally adds support for enums and makes an easier distinction between array and object.

Install

npm i typecheck-extended

Available Types

Standard Types

The following native JS types are supported as-is:

  • boolean
  • function
  • number
  • string
  • symbol
  • undefined

Extended Types

  • array: Arrays only. (ex. ['a', 'b', 'c'])
  • enum: Adds enum support.
  • object: Non-array objects only. (ex. { a: 1, b: 2, c: 3 })

In javascript, arrays have a typeof "object". typecheck-extended excludes arrays from an "object" type check.

/*
  Standard Javascript
*/
>> typeof ['River Tam', 'Mal Reynolds']; // Returns "object"
>> typeof { name: 'Kaylee Frye' }; // Returns "object"
>> Array.isArray(['River Tam', 'Mal Reynolds']); // Returns true
>> Array.isArray({ name: 'Kaylee Frye' }); // Returns false

/*
  typecheck-extended
*/
>> TypeCheck(['River Tam', 'Mal Reynolds'], 'array'); // Returns true
>> TypeCheck({ name: 'Kaylee Frye' }, 'array'); // Throws error
>> TypeCheck({ name: 'Kaylee Frye' }, 'object'); // Returns true
>> TypeCheck(['River Tam', 'Mal Reynolds'], 'object'); // Throws error

Example Usage

Parameters

  • parameter: Any - The parameter to have its type validated
  • type: String - Expected type of parameter. Limited to one of the Available Types listed above.
  • required: Bool - Defaults to true. (Optional).
  • format: Array - List of valid enums. (Optional).

Ex. Required String:

name must be received AND be string.

function SayHi(name) {
  TypeCheck(name, 'string');
  return (`Hi ${name}!`);
}

Ex. Optional String:

name can be undefined or null If name is received, it must be string.

function SayHi2(name) {
  TypeCheck(name, 'string', false);
  if (name) {
      return (`Hi ${name}!`);
  }
  return ("Hi, I'm typecheck-extended. What's your name?");
}

Ex. Required Enum:

uuid must be received AND be string.
color must be received AND be red, green, or blue.

const availableColors = ['red', 'green', 'blue'];
function SaveColorValue(uuid, color) {
  TypeCheck(uuid, 'string');
  TypeCheck(color, 'enum', true, availableColors);
  SaveToDb(uuid, color);
}

typecheck-extended uses Semantic Versioning. | Copyright © 2018 Chris Kilpatrick. Released under MIT License.