在TypeScript中如何将类型数组映射为另一个类型数组?
TypeScript 元组元素泛型包装实现方案
你可以直接通过 TypeScript 原生的映射类型遍历元组的每个索引位类型,对每个元素做Wrapper包装即可,无需额外递归逻辑,原生会保留元组的长度、可选属性等原有特性。
完整代码示例如下:
// 示例Wrapper类型定义,可替换为你实际的Wrapper逻辑 type Wrapper<T> = { value: T } // 原元组类型 type CoolTuple = [string, number, boolean] // CoolGeneric泛型实现 type CoolGeneric<T extends any[]> = { [K in keyof T]: Wrapper<T[K]> }
验证转换结果:
// 最终得到的Result类型为 [Wrapper<string>, Wrapper<number>, Wrapper<boolean>],完全符合需求 type Result = CoolGeneric<CoolTuple>
补充说明:
- 上述写法兼容定长元组、带可选元素的元组、带剩余参数的元组,所有原有元组特性都会被保留
- 如果需要处理嵌套元组的场景,可以在映射逻辑中增加递归判断即可
内容的提问来源于stack exchange,提问作者lmonninger
相关产品推荐
相关产品推荐

