如何为嵌套数组编写类型,简化number[][][]这类冗长写法?
简化三维数字数组的类型定义
你可以通过自定义**类型别名(Type Alias)**来简化多层数组的类型声明,让代码更易读且复用性更强,分两种场景处理:
通用场景(不约束数组长度)
如果二维子数组的长度不固定,可以逐层抽象类型:
// 定义单行的数字数组类型 type NumberRow = number[]; // 定义由多行组成的二维网格 type NumberGrid = NumberRow[]; // 最终的外层集合类型 type PatternCollection = NumberGrid[]; // 使用时直接引用自定义类型 const allPatterns: PatternCollection = [ [[0,0,0],[1,1,1],[0,0,0]], [[0,1,0],[0,1,0],[0,1,0]] ];
固定尺寸场景(比如严格3x3网格)
如果每个子网格都是固定的3行3列,可以用元组类型做更精确的约束,同时保持写法简洁:
// 固定3个元素的行 type Row3 = [number, number, number]; // 固定3行的3x3网格 type Grid3x3 = [Row3, Row3, Row3]; // 由多个3x3网格组成的集合 type FixedPatternCollection = Grid3x3[]; // 使用示例,不符合3x3结构会触发TS类型报错 const allPatterns: FixedPatternCollection = [ [[0,0,0],[1,1,1],[0,0,0]], [[0,1,0],[0,1,0],[0,1,0]] ];
这种方式不仅替代了繁琐的number[][][]写法,还能通过类型名称直观表达数据结构的含义,后续如果需要修改结构(比如把数字换成布尔值),只需要修改最底层的类型定义即可。
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

