diff --git a/readme.md b/readme.md index 5bfdd72..28521b9 100644 --- a/readme.md +++ b/readme.md @@ -68,6 +68,9 @@ All the below methods accept a value and returns a boolean for whether the value ##### .null(value) ##### .string(value) ##### .number(value) + +Note: `is.number(NaN)` returns `false`. + ##### .boolean(value) ##### .symbol(value) ##### .bigint(value) diff --git a/source/index.ts b/source/index.ts index 4cd388d..861b2f1 100644 --- a/source/index.ts +++ b/source/index.ts @@ -118,7 +118,7 @@ const isObject = (value: unknown): value is object => typeof value === 'object'; is.undefined = isOfType('undefined'); is.string = isOfType('string'); -is.number = isOfType('number'); +is.number = (value: unknown): value is number => isOfType('number')(value) && !is.nan(value); is.bigint = isOfType('bigint'); // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/test/test.ts b/test/test.ts index ce01004..120e665 100644 --- a/test/test.ts +++ b/test/test.ts @@ -494,7 +494,7 @@ test('is.string', t => { }); test('is.number', t => { - testType(t, 'number', ['nan', 'integer', 'safeInteger', 'infinite']); + testType(t, 'number', ['integer', 'safeInteger', 'infinite']); }); // TODO: Nodejs 10 only