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

```ts
function undefinedOr<ValueType>(
  type: ValidateUnionTypeMember<ValueType>,
): UnionType<readonly [ValueType, LiteralType<undefined>]>;
```

Defined in: [packages/common/src/Type.ts:4140](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Type.ts#L4140)

Union [Type](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type) containing the supplied Type and `undefined`.

This does not make an object property optional. It changes only the values
accepted when the property is present.

### Example

```ts

const StringOrUndefined = undefinedOr(String);

assertOk(StringOrUndefined.fromUnknown(undefined), undefined);
```