is-number
In JavaScript, it's not always as straightforward as it should be to reliably
check if a value is a number. It's common for devs to use +
, -
, or
Number()
to cast a string value to a number (for example, when values are
returned from user input, regex matches, parsers, etc). But there are many
non-intuitive edge cases that yield unexpected results:
console.log(+[]); //=> 0
console.log(+""); //=> 0
console.log(+" "); //=> 0
console.log(typeof NaN); //=> 'number'
Usage
Deno 🦕
import { assertIsNumber, isNumber } from "https://deno.land/x/is_number/mod.ts";
isNumber("hello"); //=> false
isNumber("678"); //=> true
isNumber({}); //=> false
isNumber(+{ a: "34" }); //=> false
isNumber(345); //=> true
assertIsNumber([123]); //=> throws
assertIsNumber({}); //=> throws
assertIsNumber(34); //=> doesn't throws
Node.js 🐢
import { assertIsNumber, isNumber } from "@ultirequiem/is-number";
Browser
You can use any CDN
Eg. ESM
The API is the same on all this platforms.
Documentation
True Cases
isNumber(5e3);
isNumber(0xff);
isNumber(-1.1);
isNumber(0);
isNumber(1);
isNumber(1.1);
isNumber(10);
isNumber(10.1);
isNumber(100);
isNumber("-1.1");
isNumber("0");
isNumber("012");
isNumber("0xff");
isNumber("1");
isNumber("1.1");
isNumber("10");
isNumber("10.10");
isNumber("100");
isNumber("5e3");
isNumber(parseInt("012"));
isNumber(parseFloat("012"));
False cases
Everything else is false.
isNumber(Infinity);
isNumber(NaN);
isNumber(null);
isNumber(undefined);
isNumber("");
isNumber(" ");
isNumber("foo");
isNumber([1]);
isNumber([]);
isNumber(function () {});
isNumber({});
See the tests for more examples.
CLI Tool
Was done mainly as usage example.
Install
- Node.js
🦍
npm install -g @ultirequiem/is-number
- Deno
🦕
deno install https://deno.land/x/is_number/is-number.ts
Usage
is-number 1 2 hey
true
true
false
Or with the verbose flag
is-number 1 2 hey --verbose
"1" is a number? true
"2" is a number? true
"hey" is a number? false
Support
Open an Issue, I will check it a soon as possible
If you want to hurry me up a bit
send me a tweet
Consider supporting me on Patreon if you like
my work
Don't forget to start the repo
Versioning
We use SemVer for versioning. For the versions available, see the tags.
Authors
Eliaz Bobadilla (a.k.a UltiRequiem) - Creator and
Maintainer
See also the full list of contributors who participated in this project.
Licence
Licensed under the MIT License.