Skip to main content

decodeTuple

export function decodeTuple<Decoders extends Decoder<any>[], OptionalDecoders extends Decoder<any>[] = []>(
  bytes: BytesLike,
  itemDecoders: [...Decoders[]],
  optionalDecoders: [] | [...OptionalDecoders[]]
): [
  ...{[D in string
    | number
    | symbol]: Decoders[D<D>] extends Decoder<T>
    ? T
    : never}[],
  ...{[D in string
    | number
    | symbol]: OptionalDecoders[D<D>] extends Decoder<T>
    ? undefined | T
    : never}[]
]

Type parameters

Decoders

Decoders extends Decoder<any>[]

OptionalDecoders

OptionalDecoders extends Decoder<any>[] = []

uninferable in the default case, so must be default to empty tuple

Arguments

1. bytes

bytes: BytesLike

2. itemDecoders

itemDecoders: [...Decoders[]]

3. optionalDecoders

optionalDecoders: [] | [...OptionalDecoders[]]
default to empty tuple

Returns

[
  ...{[D in string
    | number
    | symbol]: Decoders[D<D>] extends Decoder<T>
    ? T
    : never}[],
  ...{[D in string
    | number
    | symbol]: OptionalDecoders[D<D>] extends Decoder<T>
    ? undefined | T
    : never}[]
]