Type Alias Msg<TKind, TPayload>

Msg: [TPayload] extends [void] ? { kind: TKind } : { kind: TKind } & TPayload

Variant template for a discriminated Msg union. Msg<TKind> produces a payload-less { kind: TKind }; Msg<TKind, TPayload> intersects an additional payload object.

Type Parameters

  • TKind extends string

    The literal tag string identifying this variant.

  • TPayload = void

    Additional payload object merged into the variant. Defaults to void for the no-payload case.

type CounterMsg =
| Msg<'inc'>
| Msg<'dec'>
| Msg<'set', { value: number }>