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
相关产品推荐
相关产品推荐

