Skip to main content

Length of Tuple

For given a tuple, you need create a generic Length, pick the length of the tuple

For example:

ts
type tesla = ['tesla', 'model 3', 'model X', 'model Y']
type spaceX = ['FALCON 9', 'FALCON HEAVY', 'DRAGON', 'STARSHIP', 'HUMAN SPACEFLIGHT']
 
type teslaLength = Length<tesla> // expected 4
Cannot find name 'Length'.2304Cannot find name 'Length'.
type spaceXLength = Length<spaceX> // expected 5
Cannot find name 'Length'.2304Cannot find name 'Length'.
ts
type tesla = ['tesla', 'model 3', 'model X', 'model Y']
type spaceX = ['FALCON 9', 'FALCON HEAVY', 'DRAGON', 'STARSHIP', 'HUMAN SPACEFLIGHT']
 
type teslaLength = Length<tesla> // expected 4
Cannot find name 'Length'.2304Cannot find name 'Length'.
type spaceXLength = Length<spaceX> // expected 5
Cannot find name 'Length'.2304Cannot find name 'Length'.
Solution ✅
ts
type tesla = ['tesla', 'model 3', 'model X', 'model Y']
type spaceX = ['FALCON 9', 'FALCON HEAVY', 'DRAGON', 'STARSHIP', 'HUMAN SPACEFLIGHT']
type empty = []
 
type Length<A> = A extends any[] ? A['length'] : never
 
type teslaLength = Length<tesla> // expected 4
type spaceXLength = Length<spaceX> // expected 5
type emptyLength = Length<empty> // expected 0
ts
type tesla = ['tesla', 'model 3', 'model X', 'model Y']
type spaceX = ['FALCON 9', 'FALCON HEAVY', 'DRAGON', 'STARSHIP', 'HUMAN SPACEFLIGHT']
type empty = []
 
type Length<A> = A extends any[] ? A['length'] : never
 
type teslaLength = Length<tesla> // expected 4
type spaceXLength = Length<spaceX> // expected 5
type emptyLength = Length<empty> // expected 0