TypeScript type-guards and other type-safety utils to suit common use cases.
npm install @nerdware/ts-type-safety-utils
TypeScript type-guards and other type-safety utils for any environment 🎉
ESM ✅ CommonJS ✅ NodeJS ✅ browsers ✅
[![npm package][npm-badge]](https://www.npmjs.com/package/@nerdware/ts-type-safety-utils "View this project on npm")
[![Test Workflow][gh-test-badge]](.github/workflows/test.yaml "View Test Workflow file")
[![CodeCov][codecov-badge]](https://codecov.io/gh/Nerdware-LLC/ts-type-safety-utils "View CodeCov Report")
[![pre-commit][pre-commit-badge]](https://pre-commit.com "pre-commit.com")
[![semantic-release][semantic-badge]](https://github.com/semantic-release/semantic-release "github.com: semantic-release")
[![License: MIT][license-badge]](/LICENSE "View License")
[npm-badge]: https://img.shields.io/npm/v/@nerdware/ts-type-safety-utils?logo=npm&label=npm%40latest
[gh-test-badge]: https://github.com/Nerdware-LLC/ts-type-safety-utils/actions/workflows/test.yaml/badge.svg?branch=main
[codecov-badge]: https://codecov.io/gh/Nerdware-LLC/ts-type-safety-utils/graph/badge.svg?token=3I4RH7DAZX
[pre-commit-badge]: https://img.shields.io/badge/pre--commit-F8B424.svg?logo=pre-commit&logoColor=F8B424&labelColor=gray
[semantic-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-E10079.svg
[license-badge]: https://img.shields.io/badge/License-MIT-000080.svg
- 🚀 Getting Started
- 📦 Installation
- 🛠️ Usage
- ⚙️ API
- Is-x type-guards
- Other type-guards
- 🤝 Contributing
- 📝 License
- 💬 Contact
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:
``bash`
npm install @nerdware/ts-type-safety-utils
yarn:
`bash`
yarn add @nerdware/ts-type-safety-utils
`typescript
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 objectinput
} else {
// TS knows 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.