Skip to content

Instantly share code, notes, and snippets.

@Phryxia
Created June 28, 2024 05:46
Show Gist options
  • Save Phryxia/049a75f56d5688525b0426c9efcec1dd to your computer and use it in GitHub Desktop.
Save Phryxia/049a75f56d5688525b0426c9efcec1dd to your computer and use it in GitHub Desktop.
TypeScript snippet for extracting key type of array and tuple
type KeyOfArrayLike<T> =
T extends [] ?
never
: T extends [unknown, ...infer R] ?
R['length'] | KeyOfArrayLike<R>
: T extends unknown[] ?
number
: never
@Phryxia
Copy link
Author

Phryxia commented Jun 28, 2024

This type is useful when you don't know actual T during inference of complex generic type.

KeyOfArrayLike<[number, number]> // 0 | 1
KeyOfArrayLike<number[]> // number
KeyOfArrayLike<[number, ...number[]]> // number

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment