Передача хаотичных массивов в функцию 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]];