import type {Subtract} from './subtract.d.ts'; import type {IsEqual} from './is-equal.d.ts'; type Recursive = Array>; /** Creates a type that represents a multidimensional array of the given type and dimension. Use-cases: - Return a n-dimensional array from functions. - Declare a n-dimensional array by defining its dimensions rather than declaring `[]` repetitively. - Infer the dimensions of a n-dimensional array automatically from function arguments. - Avoid the need to know in advance the dimensions of a n-dimensional array allowing them to be dynamic. @example ``` import type {MultidimensionalArray} from 'type-fest'; declare function emptyMatrix(): ( dimensions: Dimension, ) => MultidimensionalArray; const unknown3DMatrix = emptyMatrix()(3); //=> unknown[][][] const boolean2DMatrix = emptyMatrix()(2); //=> boolean[][] ``` @category Array */ export type MultidimensionalArray = number extends Dimensions ? Recursive : IsEqual extends true ? Element : Array>>; export {};