A comprehensive collection of strongly-typed predicate functions and type guards for TypeScript, providing runtime type checking and type narrowing capabilities.
npm install @bisham/predicatesA utility class providing type-safe predicate functions for common value checks.
``bash`
npm install @bisham/predicates
`typescript
import { Predicates } from '@bisham/predicates';
// Type-safe checks
if (Predicates.isString(value)) {
// TypeScript knows value is string here
console.log(value.toUpperCase());
}
`
| Method | Signature | Description |
|--------|-----------|-------------|
| Type Checks |
| isString | (value: unknown): value is string | Checks if value is a string |isEmptyString
| | (value: unknown): value is "" | Checks if value is an empty string |isNotEmptyString
| | (value: unknown): value is string | Checks if value is a non-empty string |isNumber
| | (value: unknown): value is number | Checks if value is a number |isBoolean
| | (value: unknown): value is boolean | Checks if value is a boolean |isFunction
| | (func: unknown): func is Function | Checks if value is a function |isObject
| | (value: unknown): value is Record | Checks if value is an object (not null) |isDate
| | (value: unknown): value is Date | Checks if value is a Date instance |isNull
| Null/Undefined Checks |
| | (value: unknown): value is null | Checks if value is null |isUndefined
| | (value: unknown): value is undefined | Checks if value is undefined |isEmpty
| | (value: unknown): value is null \| undefined | Checks if value is null or undefined |isNotEmpty
| | (value: unknown): value is {} | Checks if value is neither null nor undefined |isEmptyArray
| Array Checks |
| | (value: unknown): value is [] | Checks if value is an empty array |isNotEmptyArray
| | (value: unknown): value is Array | Checks if value is a non-empty array |isEmptyObject
| Object Checks |
| | (value: unknown): value is Record | Checks if value is an object with no properties |isValidDateString
| Date Checks |
| | (value: unknown): value is string | Checks if value is a valid date string |isBrowser
| Environment Checks |
| | (): boolean | Checks if current environment is a browser |isOnline
| | (): boolean | Returns online status (browser) or false (Node.js) |
`typescript
import { Predicates } from '@bisham/predicates';
// Type guards with TypeScript narrowing
const value: unknown = "hello";
if (Predicates.isString(value)) {
// TypeScript knows value is string
console.log(value.length); // ✅ Works
}
// Check for empty values
if (Predicates.isEmpty(userInput)) {
console.log("Input is required");
}
// Check arrays
if (Predicates.isNotEmptyArray(items)) {
// TypeScript knows items is Array
items.forEach(item => console.log(item));
}
// Environment checks
if (Predicates.isBrowser()) {
console.log("Running in browser");
}
if (Predicates.isOnline()) {
console.log("User is online");
}
``