[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) › partial

```ts
function partial<Props>(
  props: Props,
  ..._validation: [ObjectValidationError<Props>] extends [never]
    ? []
    : [ValidationFailure<ObjectValidationError<Props>>]
): ObjectType<PartialObjectProps<Props>>;
```

Defined in: [packages/common/src/Type.ts:13692](https://github.com/evoluhq/evolu/blob/b0bdf9c308142796f98bbcaf1f1c8208aa64db65/packages/common/src/Type.ts#L13692)

Object [Type](https://evolu.dev/docs/api-reference/common/Type/interfaces/Type) with every property optional.

No property is required, but every present property must still satisfy its
Type. For [withDefault](https://evolu.dev/docs/api-reference/common/Type/functions/withDefault) properties, this disables the missing-property
default; defaults for present `null` or `undefined` values still apply.

### Example

```ts
import {
  assertFalse,
  assertOk,
  PositiveInt,
  String,
  partial,
} from "@evolu/common";

const PartialUser = partial({ name: String, age: PositiveInt });
const emptyPartialUser: typeof PartialUser.Output = {};

assertOk(PartialUser.fromUnknown({}), emptyPartialUser);
assertOk(PartialUser.fromUnknown({ name: "Ada" }), { name: "Ada" });
assertFalse(PartialUser.fromUnknown({ age: -1 }).ok);
```