You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中获取元组尾部第N个类型?

获取元组类型中倒数第N个类型的实现方法

可以通过TypeScript的条件类型和元组长度计算,实现一个通用的类型工具NthTypeOfTuple,直接从元组尾部定位目标类型。

实现代码

type NthTypeOfTuple<T extends any[], N extends number> = 
  T[T['length'] extends infer L extends number ? L + N : never];

原理说明

  1. 获取元组长度:通过T['length']获取输入元组的长度,并用infer将其推断为具体的数字字面量类型L。
  2. 计算实际索引:将负数索引N与元组长度L相加,得到对应的正数索引(比如元组长度为4,索引-2对应的实际索引是4 + (-2) = 2)。
  3. 访问目标类型:用计算出的实际索引直接访问元组类型,得到对应位置的类型。

验证示例

type UserType = 'vendor' | 'customer' | 'staff';
type SignUpParameters = [string, string, boolean, UserType];

// 取倒数第2个类型,结果为boolean
type IsAdmin = NthTypeOfTuple<SignUpParameters, -2>;

// 取倒数第1个类型,结果为UserType
type UserRole = NthTypeOfTuple<SignUpParameters, -1>;

// 取正数索引第0个类型,结果为string
type FirstParam = NthTypeOfTuple<SignUpParameters, 0>;

边界情况说明

如果输入的负数索引绝对值超过元组长度(比如对长度为4的元组传入-5),计算出的索引会超出元组的有效范围,此时类型会返回never。

内容的提问来源于stack exchange,提问作者Pratik Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:22:43