Skip to content

Flatten

Since 1.0.0

Flatten nested tuples.

Signature

typescript
type Flatten<T extends readonly unknown[], Acc extends readonly unknown[] = []> = 
  T extends readonly [infer H, ...infer R]
    ? H extends readonly unknown[]
      ? Flatten<[...H, ...R], Acc>
      : Flatten<R, [...Acc, H]>
    : Acc

Parameters

ParameterDescription
TThe nested tuple type

Examples

Basic Usage

typescript
import type { Flatten } from 'uni-types'

type Flat = Flatten<[1, [2, [3]]]> // [1, 2, 3]
type Nested = Flatten<[[1, 2], [3, 4]]> // [1, 2, 3, 4]
type Deep = Flatten<[1, [2, [3, [4, [5]]]]]> // [1, 2, 3, 4, 5]

Already Flat

typescript
type FlatAlready = Flatten<[1, 2, 3]> // [1, 2, 3]

Empty Tuple

typescript
type Empty = Flatten<[]> // []
  • Reverse - Reverse a tuple
  • Tail - Get all elements except first

Released under the MIT License.