unacy / Formatter
Type Alias: Formatter<TInput>
type Formatter<TInput> = (input) => string;Defined in: packages/core/src/formatters.ts:46
Formatter converts a format-tagged value to a string representation.
Type Parameters
| Type Parameter | Description |
|---|---|
TInput extends WithFormat<unknown, string> | Format-tagged type to format (must extend WithFormat<T, F>) |
Parameters
| Parameter | Type | Description |
|---|---|---|
input | TInput | Value tagged with the format brand |
Returns
string
Plain string representation (format brand is stripped in the output)
Remarks
- Output string should be parseable by the corresponding
Parser<TInput>to ensure round-trip integrity - The format brand carried by
TInputis lost in the string output; callers must re-parse to recover a branded value
Example
type ISO8601Date = WithFormat<Date, 'ISO8601'>;
const formatISO: Formatter<ISO8601Date> = (date) => date.toISOString();Use When
You need a typed function that can only receive format-validated values (via WithFormat<T, F>) before serialising them.
Avoid When
The value needs no format brand — accept a plain T and format without the tag overhead.
Pitfalls
NEVER call a Formatter on a plain (untagged) value without first wrapping it in the appropriate WithFormat<T, F> brand via a Parser — the brand exists to guarantee the value has been validated before formatting.
NEVER assume formatter output is stable across timezone environments — Date.toISOString() uses UTC but other formatters may be locale-sensitive.
See
- Parser
- FormatterParser