diff --git a/source/index.ts b/source/index.ts index 23c1829..b8f397c 100644 --- a/source/index.ts +++ b/source/index.ts @@ -136,8 +136,8 @@ namespace is { // tslint:disable-line:no-namespace // tslint:enable:variable-name export const nullOrUndefined = (value: any): value is null | undefined => null_(value) || undefined(value); - export const numericString = (value: string): boolean => - !Number.isNaN(Number(value)); + export const numericString = (value: any): boolean => + string(value) && value.length > 0 && !Number.isNaN(Number(value)); export const array = Array.isArray; export const buffer = isBuffer; diff --git a/source/tests/test.ts b/source/tests/test.ts index e57cb69..4285952 100644 --- a/source/tests/test.ts +++ b/source/tests/test.ts @@ -76,6 +76,14 @@ const types = new Map([ Symbol('🦄') ] }], + ['numericString', { + is: m.numericString, + fixtures: [ + '5', + '-3.2', + 'Infinity' + ] + }], ['array', { is: m.array, fixtures: [ @@ -411,7 +419,7 @@ test('is.null', t => { }); test('is.string', t => { - testType(t, 'string', ['emptyString']); + testType(t, 'string', ['emptyString', 'numericString']); }); test('is.number', t => { @@ -427,9 +435,9 @@ test('is.symbol', t => { }); test('is.numericString', t => { - t.true(m.numericString('5')); - t.true(m.numericString('-3.2')); - t.true(m.numericString('Infinity')); + testType(t, 'numericString'); + t.false(m.numericString('')); + t.false(m.numericString(1)); }); test('is.array', t => {