# 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>
  : [];

这题目看似风轻云淡哈,其实里面有一些边界条件在里面(比如奇偶元素的处理、空数组的返回),关于这类边界 case 可以参考 基操-类型推断的边界条件

当然,也有其他的思路,不过都大差不差,不做过多讨论

# 知识点

  1. 元组匹配套路
  2. 元组匹配边界值问题
Last Updated: 2026/4/19 01:08:52