Передача хаотичных массивов в функцию TypeScript

В общем вопрос следующий: Есть многомерный массив типа

[1, 2, [3, 4], [[[5,6]], 7], 8, 9, [10]] 

Не могу понять как правильно указывается тип таких массивов.
Этот массив следует передавать в функцию в качестве параметра, а возвращать надо уже нормальный разложенный массив типа

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

Причём нужно сделать универсальный тип, так как вложенность может быть любой. Вот начальный код.

type l = {
    length: number;
}
function getFlatingArray<T extends l >(arr: T): number[]{
    console.clear()

    let result: number[] = [];

    for(let i = 0; i < arr.length; i++){
        
    }
    return [];

}

console.log(getFlatingArray([1, 2, [3, 4], [[[5,6]], 7], 8, 9, [10]]))

Ответы (2 шт):

Автор решения: Евгений Колмак
const arr = [1, 2, [3, 4], [[[5, 6]], 7], 8, 9, [10]];

let result: any[] = [];
function flatArr(arr: unknown) {
  if (Array.isArray(arr)) {
    for (let i = 0; i < arr.length; i++) {
      if (Array.isArray(arr[i])) {
        flatArr(arr[i])
      } else {
        result.push(arr[i])
      }
    }
  }
  return result;


}

console.log(flatArr(arr));

Ну как я полагаю конкретного типа не получится(мое мнение), так как массивы всегда разные. По итогу присваивается все равно значение any[]. Можно аргументу задать тип unknown и потом проверить на массив. Но по итогу все равно any[].

→ Ссылка
Автор решения: SwaD

Можно попробовать "зациклить" тип вот так:

type Numberz = number | Numberz[];

const x: Numberz[] = [1, 2, [2, 3], [2, [3, 3, [5, 5, [7, 10]]], 7]];
→ Ссылка