Tuple Length

挑战

创建一个Length泛型,这个泛型接受一个只读的元组,返回这个元组的长度。

例如:

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
type spaceXLength = Length<spaceX>; // expected 5

解答

我们知道在 JavaScript 中可以使用属性 length 来访问数组的长度。我们也可以在类型上做同样的事情:

type Length<T> = T['length'];

但是我们会得到一个编译错误:Type '"length"' cannot be used to index type 'T'.。因为我们没有对 T 做限制。

type Length<T extends readonly any[]> = T['length'];

参考链接