1.0.4 • Published 5 years ago
typecheck-extended v1.0.4
typecheck-extended ·
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 validatedtype
: String - Expected type of parameter. Limited to one of the Available Types listed above.required
: Bool - Defaults totrue
. (Optional).format
: Array - List of validenums
. (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);
}