File tree Expand file tree Collapse file tree 4 files changed +10
-12
lines changed Expand file tree Collapse file tree 4 files changed +10
-12
lines changed Original file line number Diff line number Diff line change @@ -13,7 +13,6 @@ describe('unit:utils/isNumber', () => {
1313 const cases : Parameters < typeof testSubject > [ ] = [
1414 [ [ INTEGER ] ] ,
1515 [ Symbol ( 'is-number' ) ] ,
16- [ Number . NaN ] ,
1716 [ faker . string . numeric ( ) ]
1817 ]
1918
@@ -23,7 +22,11 @@ describe('unit:utils/isNumber', () => {
2322
2423 it ( 'should return true if value is a number' , ( ) => {
2524 // Arrange
26- const cases : Parameters < typeof testSubject > [ ] = [ [ FLOAT ] , [ INTEGER ] ]
25+ const cases : Parameters < typeof testSubject > [ ] = [
26+ [ FLOAT ] ,
27+ [ INTEGER ] ,
28+ [ Number . NaN ]
29+ ]
2730
2831 // Act + Expect
2932 cases . forEach ( ( [ value ] ) => expect ( testSubject ( value ) ) . to . be . true )
Original file line number Diff line number Diff line change 33 * @module tutils/utils/isNaN
44 */
55
6- import equal from './equal '
6+ import isNumber from './is-number '
77
88/**
99 * Checks if `value` is {@linkcode Number.NaN}.
@@ -13,6 +13,6 @@ import equal from './equal'
1313 * @param {unknown } value - Value to check
1414 * @return {boolean } `true` if `value` is `Number.NaN`
1515 */
16- const isNaN = ( value : unknown ) : boolean => equal ( Number . NaN , value )
16+ const isNaN = ( value : unknown ) : boolean => isNumber ( value ) && value !== + value
1717
1818export default isNaN
Original file line number Diff line number Diff line change 1111 * @param {unknown } value - Value to check
1212 * @return {value is number } `true` if `value` is a number
1313 */
14- const isNumber = ( value : unknown ) : value is number => {
15- try {
16- return Number ( value ) === value
17- } catch {
18- return false
19- }
20- }
14+ const isNumber = ( value : unknown ) : value is number => typeof value === 'number'
2115
2216export default isNumber
Original file line number Diff line number Diff line change 44 */
55
66import type { Numeric } from '#src/types'
7+ import isNaN from './is-nan'
78import isNumber from './is-number'
89import isString from './is-string'
910
@@ -19,7 +20,7 @@ import isString from './is-string'
1920 * @return {value is Numeric } `true` if `value` is a numeric
2021 */
2122const isNumeric = ( value : unknown ) : value is Numeric => {
22- return isString ( value ) && isNumber ( + value )
23+ return isString ( value ) && isNumber ( ( value = + value ) ) && ! isNaN ( value )
2324}
2425
2526export default isNumeric
You can’t perform that action at this time.
0 commit comments