diff --git a/spec/util/IsNumeric-spec.ts b/spec/util/IsNumeric-spec.ts new file mode 100644 index 0000000000..143df072d1 --- /dev/null +++ b/spec/util/IsNumeric-spec.ts @@ -0,0 +1,18 @@ +import {expect} from 'chai'; +import { isNumeric } from 'rxjs/util/isNumeric'; + +/** @test {isNumeric} */ +describe('isNumeric', () => { + it('should cover the following numeric scenario', () => { + expect(isNumeric(' ')).to.be.false; + expect(isNumeric('\n')).to.be.false; + expect(isNumeric('\t')).to.be.false; + + expect(isNumeric('0')).to.be.true; + expect(isNumeric(0)).to.be.true; + expect(isNumeric(-1)).to.be.true; + expect(isNumeric(-1.5)).to.be.true; + expect(isNumeric(6e6)).to.be.true; + expect(isNumeric('6e6')).to.be.true; + }); +}); diff --git a/src/internal/util/isNumeric.ts b/src/internal/util/isNumeric.ts index 58eeb56e95..7983f471d3 100644 --- a/src/internal/util/isNumeric.ts +++ b/src/internal/util/isNumeric.ts @@ -1,6 +1,6 @@ import { isArray } from './isArray'; -export function isNumeric(val: any): val is number { +export function isNumeric(val: any): val is number | string { // parseFloat NaNs numeric-cast false positives (null|true|false|"") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN