挑战
创建一个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'];