typa
TypeScript icon, indicating that this package has built-in type declarations

0.3.5 • Public • Published

Typa: Zero-dep JS type checker 🧐

npm npm License: MIT Twitter: @selfagency_llc

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

.arr($value) — Array

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

.bool($value) — Boolean

let isBool = is.bool(true)
// => true
 
isBool = is.bool(false)
// => true

.date($value) — Date

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

.err($value) — Error

const isErr = is.err(new Error('This is an error.'))
// => true

.fn($value) — Function

const isFn = is.fn(() => {
  console.log('Hi!')
})
// => true

.int($value) — Integer

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

.nil($value) — Null

const isNil = is.nil(null)
// => true

.nullish($value) — Null or Undefined

let isNullish = is.nullish(null)
// => true
 
isNullish = is.nullish(undefined)
// => true

.num($value) — Number

const isNum = is.num(28.2)
// => true

.obj($value) — Object

const isObj = is.obj({ key: 'value' })
// => true

.prom($value) — Promise

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

.str($value) — String

const isStr = is.str('text')
// => true

.sym($value) — Symbol

const isSym = is.sym(Symbol(42))
// => true

.undef($value) — Undefined

const isUndef = is.undef(undefined)
// => true

Author

👤 Daniel Sieradski hello@self.agency

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!

Package Sidebar

Install

npm i typa

Weekly Downloads

15

Version

0.3.5

License

MIT

Unpacked Size

50.1 kB

Total Files

15

Last publish

Collaborators

  • dsieradski