TupleOf<N, T>Constructs a tuple type with exactly N elements of type T.
When to use
Use when you need a fixed-length array type, especially instead of manually
writing [T, T, T, ...] for longer tuples.
Details
- If
Nis a literal number, produces a tuple of that exact length. - If
Nis the generalnumbertype (non-literal), degrades toArray<T>. - Negative numbers produce
never.
Example (Checking fixed-length tuples)
import type { Types } from "effect"
// Exactly 3 numbers
const triple: Types.TupleOf<3, number> = [1, 2, 3]
// @ts-expect-error - too few elements
const tooFew: Types.TupleOf<3, number> = [1, 2]
// @ts-expect-error - too many elements
const tooMany: Types.TupleOf<3, number> = [1, 2, 3, 4]tuplesTupleOfAtLeast
Source effect/Types.ts:541 lines
export type type TupleOf<
N extends number,
T
> = N extends N
? number extends N
? T[]
: TupleOf_<T, N, []>
: never
Constructs a tuple type with exactly N elements of type T.
When to use
Use when you need a fixed-length array type, especially instead of manually
writing [T, T, T, ...] for longer tuples.
Details
- If
N is a literal number, produces a tuple of that exact length.
- If
N is the general number type (non-literal), degrades to Array<T>.
- Negative numbers produce
never.
Example (Checking fixed-length tuples)
import type { Types } from "effect"
// Exactly 3 numbers
const triple: Types.TupleOf<3, number> = [1, 2, 3]
//
TupleOf<function (type parameter) N in type TupleOf<N extends number, T>N extends number, function (type parameter) T in type TupleOf<N extends number, T>T> = function (type parameter) N in type TupleOf<N extends number, T>N extends function (type parameter) N in type TupleOf<N extends number, T>N ? number extends function (type parameter) N in type TupleOf<N extends number, T>N ? interface Array<T>Array<function (type parameter) T in type TupleOf<N extends number, T>T> : type TupleOf_<
T,
N extends number,
R extends Array<unknown>
> = `${N}` extends `-${number}`
? never
: R["length"] extends N
? R
: TupleOf_<T, N, [T, ...R]>
TupleOf_<function (type parameter) T in type TupleOf<N extends number, T>T, function (type parameter) N in type TupleOf<N extends number, T>N, []> : neverReferenced by 5 symbols