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 18K minified (4.5K gzipped, 4.1K brotli-ified).
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
anyTypeValidator
-
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
) objectOrNull
objectWithOnlyTheseProperties
objectWithProperties
or
optional
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
unknownTypeValidator
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