1. typa
Super-simple, zero-dependency JavaScript type checker utility.
typa
Package: typa
Created by: selfagency
Last modified: Tue, 15 Nov 2022 17:15:38 GMT
Version: 0.3.5
License: MIT
Downloads: 94
Repository: git+https://gitlab.com/selfagency/typa.git

Install

npm install typa
yarn add typa

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 [email protected]

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!

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code