Как вы пишете интерфейс с общим, который всегда является массивом?

У меня есть общая функция:

export function limitToApiContraints<T extends Array>(payload: T, type: IQueueTypes) {
  ...
}

К сожалению, подпись общих ошибок, говорящих:

Общий тип 'Array' требует 1 аргумент (ы) типа.

Если я изменю это на:

export function limitToApiContraints<T extends Array<any>>(payload: T, type: IQueueTypes) {
  return foo as T;
}

сигнатура функции проходит структурные тесты, но когда я возвращаюсь fooкак T, она возвращается ready: any[] | IGitHubRepoMap[](где T = IGitHubRepoMap []).

Как я могу утверждать, что T всегда будет массивом, но сохраняет скрытый тип?

typescript,

0