Назад к вопросам
Middle
2
Как именно типизировать список с пагинацией? Как использовать пересечение типов для разных вариантов ответа?
Компании, где спрашивали
Chulakov
Ответ от нейросети
sobes.tech AI
Для типизации списка с пагинацией в TypeScript обычно создают интерфейс, который описывает структуру ответа с данными и метаинформацией о пагинации:
interface PaginatedResponse<T> {
items: T[];
totalCount: number;
page: number;
pageSize: number;
}
// Пример использования:
interface User {
id: number;
name: string;
}
const response: PaginatedResponse<User> = {
items: [{ id: 1, name: 'Alice' }],
totalCount: 100,
page: 1,
pageSize: 10,
};
Для разных вариантов ответа с пересечением типов можно использовать оператор & (intersection), который объединяет свойства нескольких типов:
interface SuccessResponse {
success: true;
data: User[];
}
interface ErrorResponse {
success: false;
error: string;
}
// Пересечение для варианта с пагинацией и успехом
type PaginatedSuccessResponse = PaginatedResponse<User> & SuccessResponse;
// Использование
const result: PaginatedSuccessResponse = {
items: [{ id: 1, name: 'Alice' }],
totalCount: 50,
page: 2,
pageSize: 10,
success: true,
data: [{ id: 1, name: 'Alice' }],
};
Таким образом, пересечение типов позволяет комбинировать разные части ответа, обеспечивая строгую типизацию и удобство работы с разными вариантами API-ответов.