# Type Alias: Timed<T>

[**lifecycle-kit**](https://jonbogaty.com/lifecycle-kit/api/readme/index.md)

***

[lifecycle-kit](https://jonbogaty.com/lifecycle-kit/api/readme/index.md) / [forms](https://jonbogaty.com/lifecycle-kit/api/forms/readme/index.md) / Timed


# Type Alias: Timed\<T\> {#type-alias-timedt}


> **Timed**\<`T`\> = `T` \| ((`phase`) => `T`)

Defined in: [forms/path.ts:347](https://github.com/jbcom/lifecycle-kit/blob/074e4e7b8038d3e2de9eb44c4b5b5aee0ef02b48/src/forms/path.ts#L347)

A parameter that may vary with time.

Either a constant, or a pure function of phase. This is how a jellyfish bell
pulses without time leaking into `Path`.

Phase is in turns, not radians and not seconds. Turns because one full cycle
is exactly 1.0, so the loop point is a value a test can name exactly instead
of an approximate comparison against 2π. Not seconds because a duration is
the consumer's decision, and the library does not own a clock.

Turns make the loop point exact at the seam, not inside a consumer's own
arithmetic. `Math.sin(2 * Math.PI)` is -2.4e-16 rather than 0, so a rule that
converts turns to radians and calls `sin` can still land a few ulps apart at
phase 0 versus phase 1. That is a property of the trigonometry, not of this
type, and the mitigation belongs where the periodicity is built: derive a
cyclic parameter from `phase % 1` so that phase 1 and phase 0 take the same
path through the arithmetic. What turns buy is that such a rule CAN be exact,
which a radian-based phase forecloses outright.


## Type Parameters {#type-parameters}



### T {#t}


`T`
