getDiscriminatedUnionCodec
getDiscriminatedUnionCodec<
TVariants
,TDiscriminatorProperty
>(variants
,config?
):Codec
<GetEncoderTypeFromVariants
<TVariants
,TDiscriminatorProperty
>,GetDecoderTypeFromVariants
<TVariants
,TDiscriminatorProperty
> &GetEncoderTypeFromVariants
<TVariants
,TDiscriminatorProperty
>>
Returns a codec for encoding and decoding DiscriminatedUnion.
A DiscriminatedUnion is a TypeScript representation of Rust-like enums, where
each variant is distinguished by a discriminator field (default: __kind
).
This codec inserts a numerical prefix to represent the variant index.
Type Parameters
Type Parameter | Default type | Description |
---|---|---|
TVariants extends Variants <Codec <any , any >> | - | The variants of the discriminated union. |
TDiscriminatorProperty extends string | "__kind" | The property used as the discriminator. |
Parameters
Parameter | Type | Description |
---|---|---|
variants | TVariants | The variant codecs as [discriminator, codec] pairs. |
config? | DiscriminatedUnionCodecConfig <TDiscriminatorProperty , NumberCodec > | Configuration options for encoding/decoding. |
Returns
Codec
<GetEncoderTypeFromVariants
<TVariants
, TDiscriminatorProperty
>, GetDecoderTypeFromVariants
<TVariants
, TDiscriminatorProperty
> & GetEncoderTypeFromVariants
<TVariants
, TDiscriminatorProperty
>>
A Codec
for encoding and decoding discriminated union objects.
Examples
Encoding and decoding a discriminated union.
Using a u32
discriminator instead of u8
.
Customizing the discriminator property.
Remarks
Separate getDiscriminatedUnionEncoder
and getDiscriminatedUnionDecoder
functions are available.