В общем для тех кто сюда зайдёт с тем же вопросом или похожим, то отвечу, что тайпскрипт не уверен что рекурсия будет конечной, так как массив any[] может быть сколь угодного размера. Поэтому нужно реализовывать что-то вроде верхней планки стека вызовов - по простому просто смотрим размер результирующего значения и если оно уже не входит в наш диапозон то вернуть never тип и выйти из рекурсии аварийно)