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

TypeScript泛型掩码提取元组已知部分丢失标签问题求助

带标签元组的已知部分提取问题

需求与正常实现

需要从带剩余元素的标签元组中提取已知部分,并保留原有的标签信息。以下实现符合预期:

type Data = [a: 1, b: 2, ...c: 3[]]

type TestType1<T extends any[]> = 
    T extends [...infer R extends [any, any], ...any[]] ? R : never
type test1 = TestType1<Data>
//   ^? type test1 = [a: 1, b: 2] 符合预期

泛型掩码导致的类型丢失问题

当将提取掩码改为带默认值的泛型参数后,提取结果丢失了原元组的标签和具体类型,不符合预期:

type TestType2<T extends any[], Mask extends any[] = [any, any]> = 
    T extends [...infer R extends Mask, ...any[]] ? R : never
type test2 = TestType2<Data>
//   ^? type test2 = [any, any] ??? 预期同test1为[a: 1, b: 2]

问题说明

  • 该代码在TypeScript 5.3.3版本中可正常运行,后续版本出现回归bug
  • 疑问点:是否存在代码笔误?能否在泛型掩码的实现下达到保留元组标签和具体类型的预期效果?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:09:52