1.0.15 • Published 11 months ago
@nerdware/ts-type-safety-utils v1.0.15
TypeScript type-guards and other type-safety utils for any environment 🎉ESM ✅ CommonJS ✅ NodeJS ✅ browsers ✅
🚀 Getting Started
This package provides a lightweight set of TypeScript type-guards and other type-safety utils to suit common use cases.
📦 Installation
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
🛠️ Usage
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
}
};
⚙️ API
Is-x type-guards
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) |
Other type-guards
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 |
🤝 Contributing
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!
📝 License
All files, scripts, and source code contained herein are open-source software licensed under an MIT License.
See LICENSE for more information.
💬 Contact
Trevor Anderson — Trevor@Nerdware.cloud — @TeeRevTweets