Simple, strict, extensible runtime type checker for JavaScript.
import T from '@umbrellio/typecheck'
// define a type
const userType = T.Struct({
email: T.String,
password: T.String,
age: T.Option(T.Number),
role: T.Sum('admin', 'support'),
})
// run a type check
T.check(userType, {
email: 'cow@cow.cow',
password: '12345',
age: 12,
role: 'admin',
}) // => true
Install with yarn:
$ yarn add @umbrellio/typecheck
# or with npm:
$ npm i -S @umbrellio/typecheck
- T.String:
kek
,new String('pek')
- T.Number:
69
,new Number(100)
,-2131.31
- T.Boolean:
true
,false
Signature: T.Array(type)
T.Array(T.String) // [], ['kek', 'pek']
T.Array(T.Sum(T.Boolean, T.Number)) // [], [true, 1]
Signature: T.Option(type)
T.Option(T.String) // null, undefined, 'some string'
T.Option(T.Array(T.Number)) // null, undefined, [], [69]
Signature: T.Struct(schema)
where schema
is an object
T.Struct({ name: T.String }) // { name: 'Ivan' }
T.Struct({ email: T.String, age: T.Option(T.Number) }) // { email: 'ivan@ivan.ru', age: 69 }
Signature: T.Sum(...types)
T.Sum(T.Number, T.String, T.Struct({ name: T.String })) // 69, '69', { name: 'ivan' }
import T from '@umbrellio/typecheck'
// age is a positive number
const Age = new T.Type(v => T.check(T.Number, v) && v > 0)
const userType = T.Struct({
email: T.String,
age: T.Option(Age),
})
Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/typecheck.
Released under MIT License.
Created by Alexander Komarov.