Tuple() Usage Parameters ...items Return value Examples Version History

Tuple()

import { Tuple } from "@fed1/jsos";

The JSFunction Tuple() creates a TTuple. Tuples allow array-like access to their items by index. However, there are some crucial differences between tuples, vectors and arrays:

  • Tuples are always immutable, there is no mutable equivalent
  • Tuples are associative, not sequential (JS objects, not arrays)
  • Tuples are automatically typed using their contained items in order, meaning
  • Tuples must have two or more items a Tuple("foo", "bar", 12) is of type TTuple{JSString, JSString, JSNumber} not TTuple{Union{JSString, JSNumber}}
  • TTuples are covariant, meaning a TTuple{JSString, JSNumber} is also a TTuple{TString, TNumber} and a TTuple{TAny, TAny}

Usage

Tuple(...items)

Parameters

# Parameter Required? Type Default
... items yes (2+) TAny

...items

The items to be added to the tuple. Their types are determined using typeOf and the resulting tuple will be a TTuple parameterized using these types.

Return value

A TTuple that contains the items.

Examples

Creating a tuple:

const point = Tuple(12, 18);

Tuples allow array-like access:

> point[0]
12
> point[1]
18
> point[2]
undefined

However, tuples are frozen JS objects. Setting indexes that are out of range or mutating existing indexes will throw an error in strict mode code.

> point[1] = 20
Uncaught TypeError: Cannot modify immutable tuple

Index:            1
Item type:        JSNumber
Tuple type:       TTuple{JSNumber,JSNumber}
Tuple definition: REPL2:1:11
Location:         REPL3:1:6

Tuples are iterable:

> for (const item of point) { console.log("item:", item); }
item: 12
item: 18
undefined

Version History

Feature Since version
Tuple() 1.0