# TupleOf

`type` in `utils` · v0.7.0

<https://docs.seedcord.org/packages/utils/0.7.0/types/tuple-of-2>

Create a tuple type of the specified length with elements of the specified type.

## Examples

```ts
import type {TupleOf} from 'type-fest';

type RGB = TupleOf<3, number>;
//=> [number, number, number]

type Line = TupleOf<2, {x: number; y: number}>;
//=> [{x: number; y: number}, {x: number; y: number}]

type TicTacToeBoard = TupleOf<3, TupleOf<3, 'X' | 'O' | null>>;
//=> [['X' | 'O' | null, 'X' | 'O' | null, 'X' | 'O' | null], ['X' | 'O' | null, 'X' | 'O' | null, 'X' | 'O' | null], ['X' | 'O' | null, 'X' | 'O' | null, 'X' | 'O' | null]]
```

```ts
import type {TupleOf} from 'type-fest';

type Range<Start extends number, End extends number> = Exclude<keyof TupleOf<End>, keyof TupleOf<Start>>;

type ZeroToFour = Range<0, 5>;
//=> '0' | '1' | '2' | '3' | '4'

type ThreeToEight = Range<3, 9>;
//=> '3' | '4' | '5' | '6' | '7' | '8'

Note: If the specified length is the non-literal number type, the result will not be a tuple but a regular array.
```

```ts
import type {TupleOf} from 'type-fest';

type StringArray = TupleOf<number, string>;
//=> string[]

Note: If the type for elements is not specified, it will default to unknown.
```

```ts
import type {TupleOf} from 'type-fest';

type UnknownTriplet = TupleOf<3>;
//=> [unknown, unknown, unknown]

Note: If the specified length is negative, the result will be an empty tuple.
```

```ts
import type {TupleOf} from 'type-fest';

type EmptyTuple = TupleOf<-3, string>;
//=> []

Note: If the specified length has a decimal part, the decimal part will be ignored.
```

```ts
import type {TupleOf} from 'type-fest';

type DecimalLength = TupleOf<3.5, string>;
//=> [string, string, string]

Note: If you need a readonly tuple, simply wrap this type with Readonly, for example, to create readonly [number, number, number] use Readonly<TupleOf<3, number>>.

 Array
```

## Declaration

```ts
type TupleOf<
    Length extends number,
    Fill = unknown
> = IfNotAnyOrNever<
    Length,
    _TupleOf<
        If<IsNegative<Length>, 0, Length>,
        Fill
    >,
    Fill[],
    []
>;
```
