Generic задаёт тип элементов страницы, а metadata пагинации остаётся общей. Ответ API всё равно требует runtime-проверки.
Как реализовать типизированную постраничную навигацию с помощью generics?
Generic задаёт тип элементов страницы, а metadata пагинации остаётся общей. Ответ API всё равно требует runtime-проверки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Generic задаёт тип элементов страницы, а metadata пагинации остаётся общей. Ответ API всё равно требует runtime-проверки.
Пример модели:
type Page<T> = {
items: T[];
page: number;
pageSize: number;
total: number;
};
function hasNext<T>(result: Page<T>): boolean {
return result.page * result.pageSize < result.total;
}
type User = { id: string; name: string };
type UserPage = Page<User>;
Здесь page начинается с 1, pageSize положителен, total — общее число записей. Для cursor pagination нужен другой контракт с nextCursor, а не подмена его номером страницы.