diff --git a/source/index.ts b/source/index.ts index e366b82..7402fbc 100644 --- a/source/index.ts +++ b/source/index.ts @@ -575,7 +575,7 @@ type Assert = { nodeStream: (value: unknown) => asserts value is NodeStream; infinite: (value: unknown) => asserts value is number; emptyArray: (value: unknown) => asserts value is never[]; - nonEmptyArray: (value: unknown) => asserts value is [unknown, ...unknown[]]; + nonEmptyArray: (value: T | T[]) => asserts value is [T, ...T[]]; emptyString: (value: unknown) => asserts value is ''; emptyStringOrWhitespace: (value: unknown) => asserts value is string; nonEmptyString: (value: unknown) => asserts value is string; @@ -681,7 +681,7 @@ export const assert: Assert = { nodeStream: (value: unknown): asserts value is NodeStream => assertType(is.nodeStream(value), AssertionTypeDescription.nodeStream, value), infinite: (value: unknown): asserts value is number => assertType(is.infinite(value), AssertionTypeDescription.infinite, value), emptyArray: (value: unknown): asserts value is never[] => assertType(is.emptyArray(value), AssertionTypeDescription.emptyArray, value), - nonEmptyArray: (value: unknown): asserts value is [unknown, ...unknown[]] => assertType(is.nonEmptyArray(value), AssertionTypeDescription.nonEmptyArray, value), + nonEmptyArray: (value: T | T[]): asserts value is [T, ...T[]] => assertType(is.nonEmptyArray(value), AssertionTypeDescription.nonEmptyArray, value), emptyString: (value: unknown): asserts value is '' => assertType(is.emptyString(value), AssertionTypeDescription.emptyString, value), emptyStringOrWhitespace: (value: unknown): asserts value is string => assertType(is.emptyStringOrWhitespace(value), AssertionTypeDescription.emptyStringOrWhitespace, value), nonEmptyString: (value: unknown): asserts value is string => assertType(is.nonEmptyString(value), AssertionTypeDescription.nonEmptyString, value), diff --git a/test/test.ts b/test/test.ts index d72d41d..e405325 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1477,6 +1477,36 @@ test('is.nonEmptyArray', t => { function_(value); } } + + { + const strings = ['🦄', 'unicorn']; + const function_ = (value: string) => value; + + assert.nonEmptyArray(strings); + + const value = strings[0]; + function_(value); + } + + { + const mixed = ['🦄', 'unicorn', 1, 2]; + const function_ = (value: string | number) => value; + + assert.nonEmptyArray(mixed); + + const value = mixed[0]; + function_(value); + } + + { + const arrays = [['🦄'], ['unicorn']]; + const function_ = (value: string[]) => value; + + assert.nonEmptyArray(arrays); + + const value = arrays[0]; + function_(value); + } }); test('is.emptyString', t => {