Skip to content

Nerdware-LLC/ts-type-safety-utils

Repository files navigation

Nerdware logo

Nerdware TypeScript Type-Safety Utils

TypeScript type-guards and other type-safety utils for any environment πŸŽ‰
ESM βœ… CommonJS βœ… NodeJS βœ… browsers βœ…

npm package Test Workflow CodeCov pre-commit semantic-release License: MIT

πŸš€ 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

Check out Nerdware on YouTube   Trevor Anderson's LinkedIn   Trevor Anderson's Twitter   Email Trevor Anderson

Dare Mighty Things.