[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Array](https://evolu.dev/docs/api-reference/common/Array) › concatArrays

## Call Signature

```ts
function concatArrays<T>(
  first: readonly [T, T],
  second: readonly T[],
): readonly [T, T];
```

Defined in: [packages/common/src/Array.ts:576](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Array.ts#L576)

Concatenates two arrays, returning a new readonly array.

Returns a non-empty array when at least one input is non-empty.

### Concatenating non-empty inputs

```ts
import {
  assertEqual,
  assertType,
  concatArrays,
  type NonEmptyReadonlyArray,
} from "@evolu/common";

const nonEmpty: NonEmptyReadonlyArray<number> = [1];
const joined = concatArrays([1, 2], [3, 4]);
const fromLeft = concatArrays(nonEmpty, []);
const fromRight = concatArrays([], nonEmpty);

assertEqual(joined, [1, 2, 3, 4]);
assertType<NonEmptyReadonlyArray<number>, typeof fromLeft>();
assertType<NonEmptyReadonlyArray<number>, typeof fromRight>();
```

## Call Signature

```ts
function concatArrays<T>(
  first: readonly T[],
  second: readonly [T, T],
): readonly [T, T];
```

Defined in: [packages/common/src/Array.ts:581](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Array.ts#L581)

Second non-empty.

## Call Signature

```ts
function concatArrays<T>(
  first: readonly T[],
  second: readonly T[],
): readonly T[];
```

Defined in: [packages/common/src/Array.ts:586](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Array.ts#L586)

Both possibly empty.