is-odd-ts
v3.0.0
Published
A strict TypeScript-only utility to check if a number is odd, with modern type safety.
Maintainers
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-tsOr with yarn:
yarn add is-odd-tsThis package is ESM-only and requires Node 24+.
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)); // falseCommon 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); // trueFeatures
- 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 likeNaN,Infinity, and -Infinity.- Handles large numbers: Safely checks numbers up to and including JavaScript’s
Number.MAX_SAFE_INTEGERandNumber.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_INTEGERandNumber.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 testContributing
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:
