Не делайте свойство массива частью определения общего, но вместо этого используйте
function test<T>(payload: T[]) { ... }
У меня есть общая функция:
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 всегда будет массивом, но сохраняет скрытый тип?