A collection of composable JavaScript runtime type predicates with TypeScript type guard declarations
Isntnt is a collection of composable JavaScript runtime type predicates with TypeScript type guard declarations. Supports generics including union and intersection types.
(floor: number) => (value: unknown) => value is number``typescript`
const isAboveZero = above(0)
`typescript
const isBetween0And21 = and(above(0), below(21))const isUser = shape({ name: isString })
const hasEmailAddress = at('email', isString)
const isUserWithEmail = and(isUser, hasEmailAddress) // (value: unknown) => { name: string } & { email: string }
`array
`typescript
const isAnyArray = array(isAny) // (value: unknown) => value is Array
`at
`typescript
const isAnyAtFoo = at('foo', isAny) // (value: unknown) => value is { foo: any }
`below
(max: number) => (value: unknown) => value is number`typescript
const isBelow21 = below(21)
`either
`typescript
const isFooOrBar = either('foo', 'bar') // (value: unknown) => value is 'foo' | 'bar'
`has
`typescript
const hasFoo = has('foo') // (value: unknown) => value is { 'foo': unknown }
`instance
`typescript
const isInstanceofString = instance(String) // (value: unknown) => value is String
`literal
`typescript
const is42 = literal(42) // (value: unknown) => value is 42
`max
`typescript
const isMax255 = max(255)
`maybe
`typescript
const isMaybeString = maybe(isString) // (value: unknown) => value is string | null | undefined
`min
(min: number) => (value: unknown) => value is number`typescript
const isMin18 = min(18)
`noneable
maybenullable
`typescript
const isNullableString = nullable(isString) // (value: unknown) => value is string | null
`object
`typescript
const isEnum = object(isUint) // (value: unknown) => value is Record
`optional
`typescript
const isOptionalString = optional(isString) // (value: unknown) => value is string | undefined
`or
`typescript
const isStringOrNumber = or(isString, isNumber) // (value: unknown) => value is string | number
`record
`typescript
const isDictionary = record(isString, isInt) // (value: unknown) => value is Record
`shape
> Note: Actual signature also considers optional members (
{ name?: T }) in its Predicate type`typescript
const isCoordinate = shape({ x: isNumber, y: isNumber }) // (value: unknown) => value is { x: number, y: number }
`test
(expression: RegExp) => (value: unknown) => value is string`typescript
const isSlug = test(/^[\w-]+$/)
`tuple
`typescript
const isPoint = tuple(isNumber, isNumber) // (value: unknown) => value is [number, number]
`Predicates
isAny
(value: unknown) => value is anyAlways returns
true.`typescript
isAny(value)
`isArray
(value: unknown) => value is Array`typescript
isArray(value)
`isArrayLike
(value: unknown) => value is Record`typescript
isArrayLike(value)
`isBigInt
(value: unknown) => value is bigint`typescript
isBigInt(value)
`isBoolean
(value: unknown) => value is boolean`typescript
isBoolean(value)
`isDate
(value: unknown) => value is Date`typescript
isDate(value)
`isDictionary
(value: unknown) => value is Record`typescript
isDictionary(value)
`isFalse
(value: unknown) => value is false`typescript
isFalse(value)
`isFunction
(value: unknown) => value is Function`typescript
isFunction(value)
`isInt
(value: unknown) => value is number`typescript
isInt(value)
`isInt8
(value: unknown) => value is number`typescript
isInt8(value)
`isInt16
(value: unknown) => value is number`typescript
isInt16(value)
`isInt32
(value: unknown) => value is number`typescript
isInt32(value)
`isLength
(value: unknown) => value is number`typescript
isLength(value)
`isMap
(value: unknown) => value is Map`typescript
isMap(value)
`isNegative
(value: unknown) => value is number`typescript
isNegative(value)
`isNever
(value: unknown) => value is neverAlways returns
false;`typescript
isNever(value)
`isNone
(value: unknown) => value is null | undefined`typescript
isNone(value)
`isNull
(value: unknown) => value is null`typescript
isNull(value)
`isNumber
(value: unknown) => value is number`typescript
isNumber(value)
`isObject
(value: unknown) => value is object`typescript
isObject(value)
`isObjectLike
(value: unknown) => value is ObjectLike`typescript
isObjectLike(value)
`isPlainObject
(value: unknown) => value is {}`typescript
isPlainObject(value)
`isPositive
(value: unknown) => value is number`typescript
isPositive(value)
`isPrimitive
(value: unknown) => value is Primitive`typescript
isPrimitive(value)
`
isRegExp
(value: unknown) => value is RegExp`typescript
isRegExp(value)
`isSerializable
(value: unknown) => value is Serializable`typescript
isSerializable(value)
`isSerializableArray
(value: unknown) => value is Array`typescript
isSerializableArray(value)
`isSerializableNumber
(value: unknown) => value is number`typescript
isSerializableNumber(value)
`isSerializableObject
(value: unknown) => value is Record`typescript
isSerializableObject(value)
`isSerializablePrimitive
(value: unknown) => value is SerializablePrimitive`typescript
isSerializablePrimitive(value)
`isSet
(value: unknown) => value is Set`typescript
isSet(value)
`isSome
(value: unknown) => value is Some`typescript
isSome(value)
`isString
(value: unknown) => value is string`typescript
isString(value)
`isSymbol
(value: unknown) => value is symbol`typescript
isSymbol(value)
`isTrue
(value: unknown) => value is true`typescript
isTrue(value)
`isUint
(value: unknown) => value is number`typescript
isUint(value)
`isUint8
(value: unknown) => value is number`typescript
isUint8(value)
`isUint16
(value: unknown) => value is number`typescript
isUint16(value)
`isUint32
(value: unknown) => value is number`typescript
isUint32(value)
`isUndefined
(value: unknown) => value is undefined`typescript
isUndefined(value)
`isWeakMap
(value: unknown) => value is WeakMap`typescript
isWeakMap(value)
`isWithLength
(value: unknown) => value is { length: number }`typescript
isWithLength(value)
`Types
Intersect
`typescript
Intersect // A & B
`Maybe
`typescript
Maybe // T | null | undefined
``typescript
type MaybeString = Maybe // string | null | undefined
`None
`typescript
None // null | undefined
`Nullable
`typescript
Nullable // T | null
``typescript
type NullableString = Nullable // string | null
`Optional
`typescript
Optional // T | undefined
``typescript
type OptionalString = Optional // string | undefined
`Predicate
`typescript
Predicate // (value: unknown, ...rest: Array) => value is T
`Primitive
`typescript
Primitive // null | undefined | boolean | number | string | symbol | bigint
`Serializable
`typescript
Serializable // SerializableArray | SerializableObject | SerializablePrimitive
`SerializableArray
`typescript
SerializableArray // Array
`SerializableObject
`typescript
SerializableObject // Partial<{ [key: string]: Serializable }>
`SerializablePrimitive
`typescript
SerializablePrimitive // null | boolean | number | string
`Some
`typescript
Some // Function | boolean | bigint | number | string | symbol | object
Some // Exclude
``typescript
// Make sure T is not null or undefined
type Option = T | E// Remove
null or undefined from a type
type MaybeString = Optional // string | null | undefined
type SomeString = Some // string
`Static
`typescript
Static> // T
``typescript
type True = Static // true
``