pheno
Simple, lightweight at-runtime type checking functions, with full TypeScript support
Features
- Full TypeScript integration: TypeScript understands that
assertType
andisOfType
narrow the types of things, and will refine them accordingly - Simple: Type validators are just functions that return booleans.
- Effective: There's lots of utility functions that help you represent all the various types you'd care about in your code.
- Lightweight: The whole library is 10.5K minified (3K gzipped), but it's also fully tree-shakeable, so only the type validators you use end up in your bundle.
Usage Example
import * as types from "pheno";
function something(first: unknown, second: unknown) {
// Throws an error if `first` is not a string
types.assertType(first, types.string);
// Throws an error if `second` is not `string | number`
types.assertType(second, types.union(types.string, types.number));
// Typescript now knows that `first` is a string and `second` is `string | number`
return first + " " + String(second);
}
List of types and type builder functions
and
any
anyArray
anyFunction
anyMap
anyObject
anySet
array
(alias ofarrayOfUnknown
)arrayOf
arrayOfAny
arrayOfUnknown
Array
(alias ofarrayOfUnknown
)assertType
(assert that a value has the provided type, and throw an error message if it doesn't)asType
(do a TypeScriptas
cast to convert the value into the provided type)bigint
BigInt
(alias ofbigint
)boolean
Boolean
(alias ofboolean
)Date
Error
exactBigInt
exactNumber
exactString
exactSymbol
false
falsy
Function
(alias ofunknownFunction
)hasClassName
hasToStringTag
Infinity
instanceOf
integer
intersection
isOfType
(return a boolean indicating if a value is of the provided type)map
(alias ofunknownMap
)Map
(alias ofunknownMap
)mapOf
mappingObjectOf
maybe
NaN
NegativeInfinity
never
nonNullOrUndefined
null
nullish
void
(alias ofnullish
)number
(doesn't include NaN, Infinity, or -Infinity)Number
(alias ofnumber
)numberIncludingNanAndInfinities
object
(alias ofunknownObject
)Object
(alias ofunknownObject
)objectWithOnlyTheseProperties
objectWithProperties
or
partialObjectWithProperties
record
RegExp
set
(alias ofunknownSet
)Set
(alias ofunknownSet
)setOf
string
String
(alias ofstring
)stringifyValue
(safe and lightweight value-to-string function, for printing values in error messages)stringMatching
Symbol
symbol
(alias ofSymbol
)symbolFor
true
truthy
tuple
undefined
union
unknown
unknownFunction
unknownMap
unknownObject
unknownSet
ArrayBuffer
SharedArrayBuffer
DataView
TypedArray
Int8Array
Uint8Array
Uint8ClampedArray
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
Please see the TypeScript types for each of these in either your editor's autocomplete or pheno's source code for more information.
License
MIT