TypeScript type-guards and other type-safety utils for any environment 🎉
ESM ✅ CommonJS ✅ NodeJS ✅ browsers ✅
This package provides a lightweight set of TypeScript type-guards and other type-safety utils to suit common use cases.
Install the package using your package manager of choice:
npm:
npm install @nerdware/ts-type-safety-utils
yarn:
yarn add @nerdware/ts-type-safety-utils
import { isPlainObject } from "@nerdware/ts-type-safety-utils";
// or const { isPlainObject } = require("@nerdware/ts-type-safety-utils");
const fooFn = (input: unknown) => {
if (isPlainObject(input)) {
// TS knows `input` is a plain object
} else {
// TS knows `input` is not a plain object
}
};
Function | Description |
---|---|
isArray |
Checks if a value is an array or readonly array |
isBigInt |
Checks if a value is a BigInt |
isBoolean |
Checks if a value is a boolean |
isBuffer |
Checks if a value is a NodeJS Buffer (this is a no-op in browser envs) |
isDate |
Checks if a value is a Date |
isError |
Checks if a value is an Error, an Error subclass, or DOMException |
isFunction |
Checks if a value is a function |
isNull |
Checks if a value is null |
isObjectLike |
Checks if a value is "object-like" (typeof "object" and not null) |
isPlainObject |
Checks if a value is a plain object |
isSafeInteger |
Checks if a value is a safe integer |
isString |
Checks if a value is a string |
isSymbol |
Checks if a value is a symbol |
isUndefined |
Checks if a value is undefined |
isUnsafeNumber |
Checks if a value is typeof "number" (🚨 allows NaN and other "number" values) |
Function | Description |
---|---|
getTypeSafeError |
Converts any argument into an Error object |
hasKey |
Checks if an object contains the provided key |
hasKeys |
Checks if an object contains all provided keys |
safeJsonStringify |
Type-safe JSON.stringify which will not throw if the input contains circular references or BigInts |
Pull requests are welcome! Before you begin, please check existing GitHub Issues and Pull Requests to see if your idea is already in the pipeline. If not, here's a guide on how to contribute to this project. Thank you!
All files, scripts, and source code contained herein are open-source software licensed under an MIT License.
See LICENSE for more information.