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

## Call Signature

```ts
function createSet<T>(items: readonly [T, T]): NonEmptyReadonlySet<T>;
```

Defined in: [packages/common/src/Set.ts:79](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Set.ts#L79)

Creates a readonly set from an array.

Preserves non-empty type when the input array is non-empty.

### Preserving non-empty inputs

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

const values = createSet([1, 2, 3]);
const empty = createSet([] as ReadonlyArray<number>);

assertType<typeof values, NonEmptyReadonlySet<number>>();
assertType<typeof empty, ReadonlySet<number>>();
assertEqual(values, new Set([1, 2, 3]));
```

## Call Signature

```ts
function createSet<T>(items: readonly T[]): ReadonlySet<T>;
```

Defined in: [packages/common/src/Set.ts:83](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Set.ts#L83)

Possibly empty set.