Install
Typa: Zero-dep JS type checker 🧐
The easy-peasy zero-dependency JavaScript type checker that asks, "What typa input is that?" Minified packaged version is 2 entire KB.
Notice: Breaking changes in v0.3.0. New bundler, plus nll
is now nil
and noru
is now nullish
.
Install
yarn add typa || npm install typa
Run tests
yarn test
Basic Usage
import is from 'typa' || const is = require('typa')
const hello = 'Hello!'
const goodbye = ['Goodbye!', 'Adios!', 'Au revoir!']
if (is.str(hello)) console.log(hello)
// => 'Hello!'
if (is.str(goodbye)) console.log(hello)
// => no result
API
- arr → Array
- bad → Null, undefined, empty, or an error
- bool → Boolean
- date → Date
- empty → Empty string, array, or object
- err → Error
- fn → Function
- int → Integer
- json → JSON string or object
- nil → Null
- nullish → Null or undefined
- num → Number
- obj → Object
- prom → Promise
- regex → Regular expression
- str → String
- sym → Symbol
- undef → Undefined
Typa Method
Ternary operator that checks if the supplied value matches the specified type, then returns the first callback function or value if true or the second callback function or value if false.
.typa($type, $value, $fn1, $fn2)
const isStr = () => console.log('I am a string')
const aintStr = () => console.log('I am not a string')
is.typa('str', 'Am I a string?', isStr, aintStr)
// => 'I am a string'
is.typa('str', ['Am', 'I', 'a', 'string', '?'], isStr, aintStr)
// => 'I am not a string'
What Method
Returns a string or an array of strings matching the type of the supplied value.
.what($value)
is.what('This is a string')
// => 'string'
is.what(['This', 'is', 'an', 'array'])
// => ['array', 'object']
Individual Type Methods
const isArray = is.arr(['text', 12])
// => true
.bad($value) — Null, undefined, empty, or an error
let isBad = is.bad(null)
// => true
isBad = is.bad(undefined)
// => true
isBad = is.bad({})
// => true
isBad = is.bad(new Error('This is an error'))
// => true
let isBool = is.bool(true)
// => true
isBool = is.bool(false)
// => true
const isDate = is.date(new Date())
// => true
.empty($value) — Empty string, array, or object
let isEmpty = is.empty('')
// => true
isEmpty = is.empty([])
// => true
isEmpty = is.empty({})
// => true
const isErr = is.err(new Error('This is an error.'))
// => true
const isFn = is.fn(() => {
console.log('Hi!')
})
// => true
const isInt = is.int(12)
// => true
.json($value, $type ['str'|'obj']) — JSON string (default) or object
let isJson = is.json('{"key": "value"}')
// => true
isJson = is.json({ key: 'value' }, 'obj')
// => true
const isNil = is.nil(null)
// => true
.nullish($value) — Null or Undefined
let isNullish = is.nullish(null)
// => true
isNullish = is.nullish(undefined)
// => true
const isNum = is.num(28.2)
// => true
const isObj = is.obj({ key: 'value' })
// => true
const myPromise = new Promise((resolve, reject) => {
try {
console.log('I make a promise to you')
resolve()
} catch (err) {
reject(err)
}
})
const isProm = is.prom(myPromise)
// => true
.regex($value) — Regular Expression
const isRegex = is.regex(new Regex(/\W/))
// => true
const isStr = is.str('text')
// => true
const isSym = is.sym(Symbol(42))
// => true
const isUndef = is.undef(undefined)
// => true
Author
👤 Daniel Sieradski [email protected]
- Website: self.agency
- Twitter: @selfagency_llc
- GitLab: @selfagency
Acknowledgements
Most of the checks comprising this library were pilfered from this blog post by Webbjocke.
Contributing
Contributions, issues and feature requests are welcome!
Feel free to check issues page.
Show your support
Give a ⭐️ if this project helped you!