type tuple - nberlette/is GitHub Wiki
export type IsTuple<T, True = true, False = false> = T extends
readonly [] | readonly [unknown, ...unknown[]] ? True : False;
Resolves to True
if
A
is a tuple, which is an array with a
pre-determined length and type for each of its elements. This check does not
resolve to True
for arrays such as
string[]
or Array<number>
(since they are not tuples), but does for
[1, 2, 3]
. Any other type of value will resolve to
False
.
T
-
True
(default:true
) -
False
(default:false
)
Types
import type { IsTuple } from "@nick/is/type";
type A = IsTuple<[1, 2, 3]>; // true
type B = IsTuple<string[]>; // false
type C = IsTuple<Array<number>>; // false
import type { IsTuple } from "@nick/is/type";
// using the conditional type parameters in a custom type
type EnsureTuple<T> = IsTuple<T, T, never>;
type A = EnsureTuple<[1, 2, 3]>; // [1, 2, 3]
type B = EnsureTuple<readonly []>; // readonly []
type C = EnsureTuple<string[]>; // never
type D = EnsureTuple<Array<number>>; // never