Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ultirequiem/is-number
๐งต Check if something is a number
https://github.com/ultirequiem/is-number
deno denoland javascript typescript
Last synced: 3 months ago
JSON representation
๐งต Check if something is a number
- Host: GitHub
- URL: https://github.com/ultirequiem/is-number
- Owner: UltiRequiem
- License: mit
- Created: 2021-09-27T01:04:00.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T00:16:14.000Z (10 months ago)
- Last Synced: 2024-10-23T23:29:03.910Z (4 months ago)
- Topics: deno, denoland, javascript, typescript
- Language: TypeScript
- Homepage: https://is-number.js.org
- Size: 44.9 KB
- Stars: 8
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# is-number
[![Code Coverage](https://codecov.io/gh/ultirequiem/is-number/branch/main/graph/badge.svg)](https://codecov.io/gh/ultirequiem/is-number)
[![Deno Doc](https://doc.deno.land/badge.svg)](https://doc.deno.land/https/deno.land/x/is_number/mod.ts)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:```javascript
console.log(+[]); //=> 0
console.log(+""); //=> 0
console.log(+" "); //=> 0
console.log(typeof NaN); //=> 'number'
```## Usage
### [Deno ๐ฆ](https://deno.land/x/is_number)
```javascript
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); //=> trueassertIsNumber([123]); //=> throws
assertIsNumber({}); //=> throws
assertIsNumber(34); //=> doesn't throws
```### [Node.js ๐ข](https://npmjs.com/package/@ultirequiem/is-number)
```javascript
import { assertIsNumber, isNumber } from "@ultirequiem/is-number";
```### Browser
You can use any [CDN](https://en.wikipedia.org/wiki/Content_delivery_network) ๐ฅ
Eg. [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)
โถ [SkyPack](https://cdn.skypack.dev/@ultirequiem/is-number) _/_
[script tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) โถ
[JSDelivr](https://cdn.jsdelivr.net/npm/@ultirequiem/is-number)._The API is the same on all this platforms._
## Documentation
[Autogenerated Documentation](https://doc.deno.land/https://deno.land/x/is_number/mod.ts)
Includes
[TypeScript type guards](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates),
so using it will narrow the type of previously-unknown values.```javascript
export function isEven(n: unknown): boolean {
n++ // Error, n is not a numberassertIsNumber(n);
return n % 2 === 0; // OK
}
```### True Cases
```javascript
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.
```javascript
isNumber(Infinity);
isNumber(NaN);
isNumber(null);
isNumber(undefined);
isNumber("");
isNumber(" ");
isNumber("foo");
isNumber([1]);
isNumber([]);
isNumber(function () {});
isNumber({});
```See the [tests](./mod_test.ts) for more examples.
## CLI Tool
Was done mainly as usage example.
### Install
- Node.js ๐ฆ
```sh
npm install -g @ultirequiem/is-number
```- Deno ๐ฆ
```sh
deno install https://deno.land/x/is_number/is-number.ts
```### Usage
```sh
is-number 1 2 hey
true
true
false
```Or with the verbose flag ๐
```sh
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](https://twitter.com/intent/tweet?text=%40UltiRequiem%20) ๐Consider [supporting me on Patreon](https://patreon.com/UltiRequiem) if you like
my work ๐Don't forget to star the repo โญ
## Versioning
We use [SemVer](http://semver.org) for versioning. For the versions available,
see the [tags](https://github.com/UltiRequiem/is-number/tags).## Authors
[Eliaz Bobadilla (a.k.a UltiRequiem)](https://ultirequiem.com) - Creator and
Maintainer ๐ชSee also the full list of
[contributors](https://github.com/UltiRequiem/is-number/contributors) who
participated in this project.## Licence
Licensed under the MIT License.