Я конечно в тайпскрипте не шарю, но обычно содержимое функции анализируется независимо от того, как эта функция вызывается, а дженерик без уточнения равен любому типу, а у любого типа нет свойства .length.
Посмотри, можно ли в тайпскрипте написать что-то типа <T extends Array>
или <T : Array>