UNPKG

@magnetarjs/types

Version:
18 lines (17 loc) 742 B
export type TupleOf<Value, Length extends number, Result extends readonly Value[] = []> = Result['length'] extends Length ? Result : TupleOf<Value, Length, [...Result, Value]>; export type TupleFirst<Tuple extends readonly unknown[]> = Tuple extends Readonly<[ infer Head, ...(readonly unknown[]) ]> ? Head : never; export type TupleExcludingFirst<Tuple extends readonly unknown[]> = Tuple extends Readonly<[ unknown, ...infer Tail ]> ? Tail : never; export type TupleLast<Tuple extends readonly unknown[]> = Tuple extends Readonly<[ ...infer _, infer Last ]> ? Last : never; export type TupleExcludingLast<Tuple extends readonly unknown[]> = Tuple extends Readonly<[ ...infer Rest, unknown ]> ? Rest : never;