Есть ли способ назначить правильные типы в следующем коде, чтобы TS стал счастливым?
function getRowCells<T extends string | string[]>(rowLabels: T[]): T[] {
return [1, 2, 3]
.map((item, i) => {
const labels = rowLabels[i];
if (typeof labels === 'string') {
return labels + item;
}
return getRowCells(labels); // error here, see the description below
});
}
Ошибка выделяет labels
идентификатор со следующей ошибкой:
Аргумент тип 'T' не может быть назначен параметру типа 'string []'.
Type 'строка | string [] 'не может быть назначен типу' string [] '.
Тип' string 'не может быть назначен типу' string [] '. ts (2345)
Идея состоит в том, чтобы иметь возможность передавать что-то вроде ['label', ['two', 'three']]
и получать ['label1', ['two1', 'three2']]
.
Если мы опускаем типы, этот фрагмент становится правильным кодом JS, поэтому мне интересно, есть ли способ достичь того же результата в ТС.