Sha256: 6f0d708924c3c4ee64b0fef8f10ad2b4cb87aa70b015eb758848c1ea02db0ed7
Contents?: true
Size: 1.47 KB
Versions: 28
Compression:
Stored size: 1.47 KB
Contents
import type {Subtract} from './subtract'; import type {IsEqual} from './is-equal'; type Recursive<T> = ReadonlyArray<Recursive<T>>; /** Creates a type that represents a multidimensional readonly array that 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 {MultidimensionalReadonlyArray} from 'type-fest'; function emptyMatrix<T extends number>(dimensions: T): MultidimensionalReadonlyArray<unknown, T> { const matrix: unknown[] = []; let subMatrix = matrix; for (let dimension = 1; dimension < dimensions; ++dimension) { console.log(`Initializing dimension #${dimension}`); subMatrix[0] = []; if (dimension < dimensions - 1) { subMatrix = subMatrix[0] as unknown[]; } else { subMatrix[0] = 42; } } return matrix as MultidimensionalReadonlyArray<unknown, T>; } const matrix = emptyMatrix(3); const answer = matrix[0][0][0]; // 42 ``` @category Array */ export type MultidimensionalReadonlyArray<Element, Dimensions extends number> = number extends Dimensions ? Recursive<Element> : IsEqual<Dimensions, 0> extends true ? Element : ReadonlyArray<MultidimensionalReadonlyArray<Element, Subtract<Dimensions, 1>>>;
Version data entries
28 entries across 28 versions & 2 rubygems