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

```ts
type DistributiveOmit<T, K> = T extends unknown ? Omit<T, K> : never;
```

Defined in: [packages/common/src/Types.ts:334](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Types.ts#L334)

Removes keys from each member of a union.

Use when [Omit](https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys) would collapse a discriminated union into a single
shared shape.

### Example

```ts
type Event =
  | { type: "a"; a: string; shared: number }
  | { type: "b"; b: number; shared: number };

type Payload = DistributiveOmit<Event, "shared">;
// { type: "a"; a: string } | { type: "b"; b: number }
```