变长元组构建器模式:类型安全的矩阵转置
利用变长元组(Variadic Tuple Types)和映射类型,在类型层面实现矩阵的转置操作,展示多维数组类型的精确推导。 · 难度:入门 · +10XP
变长元组构建器模式:类型安全的矩阵转置
TypeScript 4.0引入的变长元组使得我们可以操作不定长度的元组。本教程将演示如何在类型级别实现矩阵(二维数组)的转置,要求输入是一个行数确定的元组,输出是一个列数确定的元组,且所有元素类型正确。核心技巧是使用递归类型逐列提取元素并构建新行。
type Matrix<T extends any[][]> = T;
type Transpose<M extends any[][]> =
M extends [infer Row, ...infer Rest]
? Row extends any[]
? {
[K in keyof Row]: [Row[K], ...TransposeHelper<Rest, K>]
}
: never
: [];
type TransposeHelper<Rows extends any[][], K extends keyof any> =
Rows extends [infer Row, ...infer Rest]
? Row extends any[]
? Row[K] extends undefined
? []
: [Row[K], ...TransposeHelper<Rest, K>]
: []
: [];