# 9896-获取数组的中间元素
# 题目描述
通过实现一个 GetMiddleElement
方法,获取数组的中间元素,用数组表示
如果数组的长度为奇数,则返回中间一个元素如果数组的长度为偶数,则返回中间两个元素
type simple1 = GetMiddleElement<[1, 2, 3, 4, 5]>, // 返回 [3]
type simple2 = GetMiddleElement<[1, 2, 3, 4, 5, 6]> // 返回 [3, 4]
# 分析
这个题目,可以说是元组匹配关于边界值理解的一个典型题目了,思路很简单,不断匹配中间元素,直到中间元素的长度为 1 或者 2,就是题目要的结果。
# 题解
type GetMiddleElement<T extends any[]> = T['length'] extends 1 | 2
? T
: T extends [any, ...infer M, any]
? GetMiddleElement<M>
: [];
这题目看似风轻云淡哈,其实里面有一些边界条件在里面,可以参考:边界条件的讨论一节 TODO:
当然,也有其他的思路,不过都大差不差,不做过多讨论
# 知识点
- 元组匹配套路
- 元组匹配边界值问题