is-odd-ts
v1.0.1
Published
A strict TypeScript-only utility to check if a number is odd, with modern type safety.
Downloads
8
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-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 likeNaN
,Infinity
, and -Infinity
.- Handles large numbers: Safely checks numbers up to and including JavaScript’s
Number.MAX_SAFE_INTEGER
andNumber.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: