Join Nostr
2025-01-25 17:16:55 UTC

Axel Rauschmayer on Nostr: #TypeScript experiment: dropping elements from a tuple type Drop<Tuple extends ...

#TypeScript experiment: dropping elements from a tuple

type Drop<Tuple extends Array<unknown>, Num extends number, Counter extends Array<boolean> = []> =
Counter['length'] extends Num
? Tuple
: Tuple extends [unknown, ...infer Rest extends Array<unknown>]
? Drop<Rest, Num, [true, ...Counter]>
: Tuple
;
type X = Drop<['a', 'b', 'c'], 2>; // ["c"]

`Counter` feels hacky but not sure it can be avoided.