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

```ts
type Lazy<T> = () => T;
```

Defined in: [packages/common/src/Function.ts:140](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Function.ts#L140)

A function that takes no arguments and returns a value of type T. Also known
as a thunk.

Useful for:

- Providing default callbacks (see [lazyVoid](https://evolu.dev/docs/api-reference/common/Function/variables/lazyVoid), [lazyTrue](https://evolu.dev/docs/api-reference/common/Function/variables/lazyTrue), etc.)
- Delaying expensive operations until actually needed
- Deferring side effects so the callee controls when they run

### Example

```ts
// Default callback
const notify = (onDone: Lazy<void> = lazyVoid) => {
  onDone();
};

// Delay computation
const getData: Lazy<Data> = () => compute();
const data = getData();

// Defer side effects
const schedule = (job: Lazy<void>) => {
  queueMicrotask(job);
};
schedule(() => logMetric("loaded"));
```