> For the complete documentation index, see [llms.txt](https://notes.danfitz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://notes.danfitz.com/javascript/typescript-developers-guide/f-tuples-in-typescript.md).

# Tuples In Type Script

## Tuples in Action

A **tuple** is a data structure that represents an item by placing its properties into distinct indices.

So instead of an object,

```ts
const drink = {
  color: 'brown',
  carbonated: true,
  sugar: 40,
};
```

you can represent it as a tuple.

```ts
const drink = ['brown', true, 40];
```

However, JavaScript doesn't natively support tuples. In reality, the code snippet above is just an *array*. That means you can mess with the order.

```ts
const drink = ['brown', true, 40];
drink[2] = 'brown'; // nothing stops us from changing the order!
```

TypeScript gives us the ability to convert our array into a real tuple!

```ts
const drink: [string, boolean, number] = ['brown', true, 40];
drink[2] = 'brown'; // TypeScript will complain here
```

## Why Tuples?

Generally, tuples aren't great for representing a piece of data because the indices aren't meaningful. Most of the time, a piece of data is better represented as an object because it associates values to named keys.

But in any case, it's good to know its existence in TypeScript!
