import {expectType} from 'tsd'; import type {MultidimensionalReadonlyArray} from '../index'; function createArray(dimensions: T): MultidimensionalReadonlyArray { const root: unknown[] = []; let array = root; for (let dimension = 1; dimension < dimensions; ++dimension) { console.log(`Initializing dimension #${dimension}`); array[0] = []; if (dimension < dimensions - 1) { array = array[0] as unknown[]; } else { array[0] = '42'; } } return root as MultidimensionalReadonlyArray as MultidimensionalReadonlyArray; } const a: MultidimensionalReadonlyArray = []; const b: MultidimensionalReadonlyArray = []; const c = createArray(2); const answer = c[0][0]; // '42' type RecursiveArray = ReadonlyArray>; expectType(answer); expectType>>(a); expectType>(b); expectType>(c);