Kit
Type aliases

DiscriminatedUnion

DiscriminatedUnion<TDiscriminatorProperty, TDiscriminatorValue> = { [P in TDiscriminatorProperty]: TDiscriminatorValue }

Represents a discriminated union using a specific discriminator property.

A discriminated union is a TypeScript-friendly way to represent Rust-like enums. Each variant in the union is distinguished by a shared discriminator property.

Type Parameters

Type ParameterDefault typeDescription
TDiscriminatorProperty extends string"__kind"The name of the discriminator property.
TDiscriminatorValue extends stringstringThe type of the discriminator value.

Example

type Message =
  | { __kind: 'Quit' } // Empty variant
  | { __kind: 'Write'; fields: [string] } // Tuple variant
  | { __kind: 'Move'; x: number; y: number }; // Struct variant

On this page