API reference@evolu/commonArray › isNonEmptyArray

Call Signature

function isNonEmptyArray<T>(array: T[]): array is [T, ...T[]];

Defined in: packages/common/src/Array.ts:352

Checks if an array is non-empty and narrows its type to NonEmptyArray or NonEmptyReadonlyArray based on the input.

To check if an array is empty, use if (!isNonEmptyArray(arr)) — using the negated guard is better than .length === 0 for early returns because TypeScript narrows the type after the check.

Narrowing mutable and readonly arrays

import {
  assertEqual,
  assertType,
  firstInArray,
  isNonEmptyArray,
  type NonEmptyArray,
  type NonEmptyReadonlyArray,
} from "@evolu/common";

const mutable: Array<number> = [1, 2, 3];
const readonly: ReadonlyArray<number> = [1, 2, 3];
if (!isNonEmptyArray(mutable) || !isNonEmptyArray(readonly)) {
  throw new Error("Expected values");
}

assertType<NonEmptyArray<number>, typeof mutable>();
assertType<NonEmptyReadonlyArray<number>, typeof readonly>();
assertEqual(firstInArray(readonly), 1);

Call Signature

function isNonEmptyArray<T>(array: readonly T[]): array is readonly [T, T];

Defined in: packages/common/src/Array.ts:354

Readonly array overload.