Length of Tuple
创建一个通用的Length,接受一个readonly的数组,返回这个数组的长度。
// 假如你有一下这两个数组,你怎样支持他们的类型
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
/**
* 思路:
* 1 利用 extends 的特点约束为数组类型。
* 2 数组的类型就有 length 属性
*/
type Length<T extends readonly any[]> = T["length"];