Type Alias _<A, N, Fail, Upper, Lower>

_: IsEqual<
    A["length"],
    0,
    Fail,
    NumberPlus.IsInteger<
        N,
        {
            $else: IsAny<
                N,
                {
                    $else: NumberPlus.IsNumber<
                        N,
                        { $else: never; $then: N; exact: true },
                    >;
                    $then: number;
                },
            >;
            $then: NumberPlus.IsNumber<
                A["length"],
                {
                    $else: NumberPlus.IsNegative<
                        N,
                        {
                            $else: GreaterThan<A["length"], N> extends true ? N : Upper;
                            $then: GreaterThan<Abs<N>, A["length"]> extends true
                                ? Lower
                                : Subtract<A["length"], Abs<N>>;
                        },
                    >;
                    $then: N;
                    exact: true;
                },
            >;
        },
    >,
>

Type Parameters

  • A extends readonly unknown[]
  • N extends number
  • Fail = never
  • Upper = A["length"]
  • Lower = 0