Narcoleptic Pony Machine

    is-number-strict
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.8 • Public • Published

    StandsWithUkraine

    IsNumberStrict

    Weekly loads Minzipped size Build Status codecov TypeSCript GitHub license

    Designed to strictly check if the value can be treated as a number. Works with Number objects, hex an so on. Returns false for strings and other not numbers like {}, undefined, NaN

    Install

    npm i is-number-strict

    Usage

    JavaScript with require syntax

    const isNumber = require('is-number-strict').default;
    
    console.assert(isNumber(5));
    console.assert(!isNumber('5'));

    JavaScript with import syntax

    import isNumber from "is-number-strict";
    
    console.assert(isNumber(5));
    console.assert(!isNumber('5'));

    What problem it solves

    This tiny lib tries to make type assertion little bit more predictable and remove NaN from your calculations.

    typeof new Number(42);
    > 'object'

    But it is working as good old number

    new Number(5) * new Number(6);
    > 30

    So:

    isNumberStrict(new Number(5));
    > true

    But:

    isNumberStrict('5');
    > false

    And

    isNumberStrict(NaN);
    > false

    Why didn't you treat '5' as a number? '5' + 5 = 10! Yes, but 5 + '5' = '55' and 5 * '5' = NaN. I don't want to see NaN or '55' in my calculations.

    So if you want to have more predictable type checking - check my tests and welcome!

    Some wired cases

    Why do you treat new Number([]) as a number?

    Because JS will evaluate it to 0, and 0 is number.

    Why do you treat new number({}) as not a number?

    Because JS will evaluate it to NaN and NaN is not a number according to my purposes.

    Install

    npm i is-number-strict

    DownloadsWeekly Downloads

    468

    Version

    1.0.8

    License

    MIT

    Unpacked Size

    174 kB

    Total Files

    18

    Last publish

    Collaborators

    • drag13