ts-type-forge
    Preparing search index...

    Type Alias Flatten<T>

    Flatten: T extends readonly []
        ? readonly []
        : T extends readonly [
            infer H extends readonly unknown[],
            ...(infer R extends readonly (readonly (...)[])[]),
        ]
            ? Readonly<[...H, ...Tuple.Flatten<R>]>
            : readonly T[number][number][]

    Flattens a nested readonly tuple T by one level. General (non-tuple) arrays are supported both as the outer type and as elements; where the exact layout is not statically known, the result degrades to a general readonly array of the combined element types.

    Type Parameters

    • T extends readonly (readonly unknown[])[]

      A readonly tuple where elements are themselves readonly arrays/tuples.

    A new readonly tuple type flattened by one level.

    type F1 = Tuple.Flatten<[[1, 2], [3, 4]]>; // readonly [1, 2, 3, 4]
    type F2 = Tuple.Flatten<[[1], readonly [2, 3]]>; // readonly [1, 2, 3]
    type F3 = Tuple.Flatten<[[1], [2, [3]]]>; // readonly [1, 2, [3]] (only flattens one level)
    type F4 = Tuple.Flatten<[readonly number[], readonly string[]]>; // readonly (number | string)[]
    type F5 = Tuple.Flatten<readonly (readonly number[])[]>; // readonly number[]