A versatile collection of runtime type guards and value checks for common JavaScript/TypeScript data types.
| Method / Property | Description | Since | Example Link |
|---|---|---|---|
defined(value) |
Checks if a value is defined (not null or undefined). |
v1.0.0 | Example › |
instanceOf(value, constructor) |
Checks if a value is an instance of a given class. | v1.0.0 | Example › |
instanceOfLoose(value, constructor) |
Checks if a value is an instance or loosely matches a primitive constructor (Number, String, Boolean). | v1.0.0 | Example › |
number |
Checks if a value is a number. | v1.0.0 | Example › |
negativeNumber |
Checks if a value is a negative number. | v1.0.0 | Example › |
positiveNumber |
Checks if a value is a positive number. | v1.0.0 | Example › |
integer |
Checks if a value is an integer. | v1.0.0 | Example › |
float |
Checks if a value is a floating-point number. | v1.0.0 | Example › |
finite |
Checks if a value is a finite number. | v1.0.0 | Example › |
NaN |
Checks if a value is NaN (Not-a-Number). | v1.0.0 | Example › |
string |
Checks if a value is a string. | v1.0.0 | Example › |
blankString |
Checks if a string contains only whitespace. | v1.0.0 | Example › |
emptyString |
Checks if a string is empty (""). |
v1.0.0 | Example › |
notEmptyString |
Checks if a string is not empty. | v1.0.0 | Example › |
validString |
Checks if a string is non-empty after trimming. | v1.0.0 | Example › |
alphaString |
Checks if a string contains only alphabetic characters. | v1.0.0 | Example › |
alphaNumericString |
Checks if a string contains only alphabetic and numeric characters. | v1.0.0 | Example › |
uuid |
Checks if a string is a valid UUID (default v4). | v1.0.0 | Example › |
globLike |
Checks if a string pattern contains glob wildcards (* or ?). |
v1.0.0 | Example › |
object |
Checks if a value is a plain object (non-null, not class instances). | v1.0.0 | Example › |
freezable |
Checks if a value is freezable (an object or array). | v1.0.0 | Example › |
record |
Checks if a value is a non-empty record (plain object with at least one key). | v1.0.0 | Example › |
emptyRecord |
Checks if a value is an empty record (plain object with no keys). | v1.0.0 | Example › |
array |
Checks if a value is an array. | v1.0.0 | Example › |
notEmptyArray |
Checks if a value is a non-empty array. | v1.0.0 | Example › |
arrayOf(itemGuard) |
Returns a guard that checks if a value is an array where every item matches itemGuard. |
v1.0.0 | Example › |
arrayOfNumbers |
Checks if a value is an array of numbers. | v1.0.0 | Example › |
arrayOfStrings |
Checks if a value is an array of strings. | v1.0.0 | Example › |
Signature: defined(value: unknown): value is NonNullable<unknown>
Check if a value is defined or not (not null or undefined).
valueIs.defined(null); // false
valueIs.defined(undefined); // false
valueIs.defined(0); // trueSignature: instanceOf<T>(value: unknown, constructor: abstract new (...args: any[]) => T): value is T
Check if a value is an instance of the specified class.
const date = new Date();
valueIs.instanceOf(date, Date); // true
const number = 42;
valueIs.instanceOf(number, Date); // falseSignature: instanceOfLoose<T>(value: unknown, constructor: abstract new (...args: any[]) => T): value is T
Loose instance check including primitive types (Number, String, Boolean).
valueIs.instanceOfLoose(42, Number); // true
valueIs.instanceOfLoose('hello', String); // true
valueIs.instanceOfLoose(true, Boolean); // true
valueIs.instanceOfLoose(new Date(), Date); // true
valueIs.instanceOfLoose(null, Date); // falseSignature: readonly number: (value: unknown) => value is number
Check if a value is a number.
valueIs.number(123); // true
valueIs.number('123'); // falseSignature: readonly negativeNumber: (value: unknown) => value is number
Check if a value is a negative number.
valueIs.negativeNumber(-10); // true
valueIs.negativeNumber(5); // falseSignature: readonly positiveNumber: (value: unknown) => value is number
Check if a value is a positive number.
valueIs.positiveNumber(10); // true
valueIs.positiveNumber(-5); // falseSignature: readonly integer: (value: unknown) => value is number
Check if a value is an integer.
valueIs.integer(10); // true
valueIs.integer(10.5); // falseSignature: readonly float: (value: unknown) => value is number
Check if a value is a floating point number.
valueIs.float(10.5); // true
valueIs.float(10); // falseSignature: readonly finite: (value: unknown) => value is number
Check if a value is a finite number.
valueIs.finite(100); // true
valueIs.finite(Infinity); // falseSignature: readonly NaN: (value: unknown) => boolean
Check if a value is NaN (Not-a-Number).
valueIs.NaN(NaN); // true
valueIs.NaN(123); // falseSignature: readonly string: (value: unknown) => value is string
Check if a value is a string.
valueIs.string('hello'); // true
valueIs.string(123); // falseSignature: readonly blankString: (value: unknown) => boolean
Check if a string contains only whitespace.
valueIs.blankString(' '); // true
valueIs.blankString('text'); // falseSignature: readonly emptyString: (value: unknown) => boolean
Check if a string is empty.
valueIs.emptyString(''); // true
valueIs.emptyString('text'); // falseSignature: readonly notEmptyString: (value: unknown) => boolean
Check if a string is not empty.
valueIs.notEmptyString('hello'); // true
valueIs.notEmptyString(''); // falseSignature: readonly validString: (value: unknown) => boolean
Check if a string is valid (not empty after trimming).
valueIs.validString('hello'); // true
valueIs.validString(' '); // falseSignature: readonly alphaString: (value: unknown) => boolean
Check if a string contains only alphabetic characters.
valueIs.alphaString('hello'); // true
valueIs.alphaString('hello123'); // falseSignature: readonly alphaNumericString: (value: unknown) => boolean
Check if a string contains only alphabetic and numeric characters.
valueIs.alphaNumericString('hello123'); // true
valueIs.alphaNumericString('hello_123'); // falseSignature: readonly uuid: (value: unknown, version?: string) => boolean
Check if a string is a valid UUID.
valueIs.uuid('550e8400-e29b-41d4-a716-446655440000'); // true
valueIs.uuid('invalid-uuid'); // falseSignature: readonly globLike: (pattern: string) => boolean
Check if a string is a glob-like pattern (* or ? present).
valueIs.globLike('file*.txt'); // true
valueIs.globLike('filename.txt'); // falseSignature: readonly object: (value: unknown) => boolean
Check if a value is an object (not null, not class instance).
valueIs.object({}); // true
valueIs.object(null); // false
valueIs.object(new Date()); // falseSignature: readonly freezable: (value: unknown) => boolean
Check if a value is freezable (object or array).
valueIs.freezable({}); // true
valueIs.freezable([1, 2, 3]); // true
valueIs.freezable(null); // false
valueIs.freezable(new Date()); // falseSignature: readonly record: (value: unknown) => boolean
Check if a value is a plain record (object literal with keys).
valueIs.record({ foo: 'bar' }); // true
valueIs.record(null); // false
valueIs.record([1, 2, 3]); // falseSignature: readonly emptyRecord: (value: unknown) => boolean
Check if a value is an empty record (no keys).
valueIs.emptyRecord({}); // true
valueIs.emptyRecord(null); // falseSignature: readonly array: (value: unknown) => boolean
Check if a value is an array.
valueIs.array([1, 2, 3]); // true
valueIs.array('string'); // false
valueIs.array(null); // falseSignature: readonly notEmptyArray: (value: unknown) => boolean
Check if a value is a non-empty array.
valueIs.notEmptyArray([]); // false
valueIs.notEmptyArray([1, 2]); // true
valueIs.notEmptyArray('string'); // falseSignature: readonly arrayOf: (itemGuard: (item: unknown) => boolean) => (value: unknown) => boolean
Check if a value is an array of items that pass a given guard function.
const isArrayOfNumbers = valueIs.arrayOf(valueIs.number);
isArrayOfNumbers([1, 2, 3]); // true
isArrayOfNumbers([1, 'a', 3]); // false
isArrayOfNumbers('not an array'); // falseSignature: readonly arrayOfNumbers: (value: unknown) => boolean
Check if a value is an array of numbers.
valueIs.arrayOfNumbers([1, 2, 3]); // true
valueIs.arrayOfNumbers([1, '2', 3]); // false
valueIs.arrayOfNumbers('not an array'); // falseSignature: readonly arrayOfStrings: (value: unknown) => boolean
Check if a value is an array of strings.
valueIs.arrayOfStrings(['a', 'b', 'c']); // true
valueIs.arrayOfStrings(['a', 2, 'c']); // false
valueIs.arrayOfStrings('not an array'); // false