• Decoder that tries multiple decoders in sequence until one succeeds.

    Type Parameters

    • T

    Parameters

    • decoders: Decoder<T>[]

      Array of decoders to try in sequence

    • decoderName: string

      How to display the name of the object being decoded in errors

    Returns Decoder<T>

    A decoder that tries each decoder in sequence until one succeeds

    const stringOrNumber = JsonDecoder.oneOf<string | number>(
    [JsonDecoder.string(), JsonDecoder.number()],
    'StringOrNumber'
    );

    stringOrNumber.decode('hello'); // Ok<string>({value: 'hello'})
    stringOrNumber.decode(42); // Ok<number>({value: 42})
    stringOrNumber.decode(true); // Err({error: '<StringOrNumber> decoder failed because true is not a valid value'})