Simple and lightweight module for dynamic type checking.
npm install psycho-type 


Simple and lightweight type validation library for node.
``js
const type = require('psycho-type')
const referece = {
'foo': type.string(),
'bar': type.number()
}
type.check( reference, {
'foo': 'string',
'bar': 3
})
// => true
`
`bash`
$ npm i psycho-type
`js
/ Validating single item /
const valid_type = type.string()
/ You can do it with check function /
type.check( valid_type, 'string' )
//=> true
/ Or only with valid type function /
valid_type( 'string' )
//=> true
`
Object validation is a little similar to TypeScript Interfaces.
`js
/ Validating objects /
const reference = { // Reference object, contain types.
'foo': type.string(), //
'bar': type.boolean(), //
'fizz': { //
'buzz': type.number() //
}
}
const object = { // Object to validate.
'foo': 'String', //
'bar': true, //
'fizz': { //
'buzz': 15 //
}
}
type.check( reference, object )
//=> true
`
+ Basic types
- Any
- String
- Numbers
* Any Number
* Number
* BigInt
- Boolean
- Function
- Object
- Array
- Symbol
- Undefined
- Null
- NaN
+ Complex types
- No Value
- Empty
- Array Of _\
- Enum _\
- Some Of _\
- Not _\
+ Check Method
+ Of Method
Param {Any} item
Return {Boolean}
`js
const any = type.any()
any( * )
//=> true
`
Param {Any} item
Return {Boolean}
`js
const string = type.string()
string( 's' )
//=> true
string( 3 )
//=> false
string( new String() )
//=> true
`
#### Any Number
Allow number, bigInt or NaN.
Param {Any} item
Return {Boolean}
`js
const anyNumber = type.anyNumber()
anyNumber( 3 )
//=> true
anyNumber( BigInt() )
//=> true
anyNumber( '3' )
//=> false
`
#### Number
Allow only regular number.
Param {Any} item
Return {Boolean}
`js
const number = type.number()
number( 3 )
//=> true
number( BigInt() )
//=> false
number( '3' )
//=> false
`
#### BigInt
Allow only BigInt.
Have two aliases:
- bigInt
- bigNumber
Param {Any} item
Return {Boolean}
`js
const bigint = type.bigInt()
bigint( 3 )
//=> false
bigint( BigInt() )
//=> true
bigint( '3n' )
//=> false
`
Param {Any} item
Return {Boolean}
`js
const bool = type.bool()
bool( 3 )
//=> false
bool( true )
//=> true
bool( new Boolean(1) )
//=> true
`
! Any class/constructor will return true !
Param {Any} item
Return {Boolean}
`js
const func = type.function()
func( 3 )
//=> false
func( () => {} )
//=> true
func( Boolean ) // Because ' Boolean ' it's the constructor
//=> true
`
! Doesn't allow null or basic data types even if it's created by ' new Object() ' !
Param {Any} item
Return {Boolean}
`js
const object = type.object()
object( new Object() )
//=> true
object( new Object(3) )
//=> false
object( {} )
//=> true
`
Param {Any} item
Return {Boolean}
`js
const array = type.array()
array( [] )
//=> true
array( new array( 3, 4 ) )
//=> true
array( {} )
//=> false
`
Param {Any} item
Return {Boolean}
`js
const symbol = type.symbol()
symbol( [] )
//=> false
symbol( Symbol( '3' ) )
//=> true
symbol( {} )
//=> false
`
Param {Any} item
Return {Boolean}
`js
const not_defined = type.undefined()
not_defined( [] )
//=> false
not_defined( null )
//=> false
not_defined( undefined )
//=> true
`
Param {Any} item
Return {Boolean}
`js
const null_type = type.null()
null_type( [] )
//=> false
null_type( null )
//=> true
null_type( undefined )
//=> false
`
Param {Any} item
Return {Boolean}
`js
const null_type = type.null()
null_type( [] )
//=> false
null_type( null )
//=> true
null_type( undefined )
//=> false
`
Param {Any} item
Return {Boolean}
`js
const no_value = type.noValue()
no_value( [] )
//=> false
no_value( null )
//=> true
no_value( undefined )
//=> true
`
! Doesn't work NOW with values created from constructor ( like ' new String() ' ) !
Param {Any} item
Return {Boolean}
`js
const empty = type.empty()
empty( [] )
//=> true
empty( null )
//=> false
empty( new String() )
//=> false
`
Param {Array} ...types
Return {function}:
Param {Array} item
Return {Boolean}
`js
const array = type.arrayOf(
type.string(),
type.boolean()
)
array([ 'string', true ])
//=> true
array( null )
//=> false
array( new Boolean() )
//=> true
`
! Doesn't work NOW for values, created by like ' new Number() ' !
Param {Array} ...values
Return {function}:
Param {Any} item
Return {Boolean}
`js
const enum = type.enum(
'value',
3
)
enum( 'value' )
//=> true
enum( 3 )
//=> true
enum( 4 )
//=> false
`
Param {Array} ...types
Return {function}:
Param {Any} item
Return {Boolean}
`js
const some = type.someOf(
type.string(),
type.boolean()
)
some( 'value' )
//=> true
some( 3 )
//=> false
some( false )
//=> true
`
Param {Array} ...types
Return {function}:
Param {Any} item
Return {Boolean}
`js
const not = type.not(
type.string(),
type.boolean()
)
some( 'value' )
//=> false
some( 3 )
//=> true
some( false )
//=> false
`
! Method will return false if reference is not valid, without any exeption !
Param {Object|Function} reference/type
Return {Boolean}
`js
const reference = { // Reference object, contain types.
'foo': type.string(), //
'bar': type.boolean(), //
'fizz': { //
'buzz': type.number() //
}
}
const object = { // Valid object.
'foo': 'String', //
'bar': true, //
'fizz': { //
'buzz': 15 //
}
}
type.check( reference, object )
//=> true
`
Param {Any} item
Return {String}
`js
type.of( Number );
//=> 'function'
type.of( null );
//=> 'null'
type.of( NaN );
//=> 'NaN'
type.of( new Object('string') );
//=> 'string'
``