npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

is-odd-ts

v1.0.1

Published

A strict TypeScript-only utility to check if a number is odd, with modern type safety.

Downloads

79

Readme

is-odd-ts

A strict TypeScript utility to check if a number is odd, with modern type safety and support for edge cases.


Welcome to is-odd-ts, a lightweight utility for checking if a number is odd, built specifically with strict TypeScript settings. Whether you're working with everyday integers or hitting edge cases like NaN, Infinity, or very large numbers, this package has you covered.

Why use is-odd-ts?

  • Type Safety: Written in TypeScript with the strictest settings, so you get full type safety in your projects.
  • Handles Edge Cases: Checks for non-integers, NaN, Infinity, and numbers beyond JavaScript’s safe integer range.
  • No Dependencies: It's small, fast, and doesn’t add bloat to your project.
  • Modern ESM: Fully compatible with modern JavaScript (ESM) and TypeScript setups.
  • Formatted and Linted: This package is formatted and linted using Biome.js, ensuring clean and consistent code.

Installation

You can install it with npm:

npm install is-odd-ts

Or with yarn:

yarn add is-odd-ts

Usage

import { isOdd } from 'is-odd-ts';

console.log(isOdd(1));  // true
console.log(isOdd(2));  // false
console.log(isOdd(-3)); // true
console.log(isOdd(0));  // false

Common Edge Cases

isOdd(NaN);         // Throws: "Expected a finite number"
isOdd(Infinity);    // Throws: "Expected a finite number"
isOdd(-Infinity);   // Throws: "Expected a finite number"
isOdd(1.5);         // Throws: "Expected an integer"
isOdd(Number.MAX_SAFE_INTEGER);  // true
isOdd(Number.MIN_SAFE_INTEGER);  // true

Features

  • Zero and Negative Zero: Both return false (since zero is even).
  • Floats: Throws an error if you try passing in a float.
  • Infinity & NaN: Throws errors for invalid inputs like NaN, Infinity, and -Infinity.
  • Handles large numbers: Safely checks numbers up to and including JavaScript’s Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER.

Testing & Reliability

I've put effort into testing this utility across a variety of scenarios to make sure it behaves consistently and handles edge cases properly. The tests cover:

  • Regular odd and even integers (both positive and negative).
  • Handling of zero and negative zero.
  • Large numbers, including Number.MAX_SAFE_INTEGER and `Number.MIN_SAFE_INTEGER``.
  • Proper error handling for invalid inputs like NaN, Infinity, floats, and values beyond safe integer limits.

Tests have been written using Node's native test runner. Run the tests locally with:

npm run test

Contributing

If you find something missing or think the utility could be improved, feel free to contribute. Open an issue or submit a pull request, and let's keep it simple and efficient.

License

This project is licensed under the MIT License, so feel free to use it in your own projects.

Links: